Как получить левое значение элемента в каждой дочерней функции?

ОСТАНОВИТЕ ПРЕССУ!

Моя вина... Я пытался прочитать свойства, которые не были установлены в то время, когда я хотел их прочитать!

Я использую детей и каждый для перебора дочерних элементов DIV. Это дает мне объект this, который я использую для перемещения элемента, чтобы он стал дочерним элементом другого элемента. Это хорошо работает... но мне также нужно получить доступ к встроенному стилю "слева" перемещаемого элемента... просто не могу понять, как получить это значение...

$jquery("#thediv").children(".someclass").each(function () {

// move the element to another div
$jquery("#right").append($jquery(this));

});

Вышеприведенный код прекрасно работает... Но перед перемещением элемента мне нужно получить встроенное левое значение для элемента. Я пытался:

$jquery(this).css("left"); 

Приведенная выше строка дает мне «авто» взамен, фактическое значение для левой стороны - «0px». Что мне нужно использовать, чтобы получить левое значение?

Я также хотел бы установить встроенный стиль пустым перед перемещением элемента... Для этого я пробовал:

$jquery(this).attr('style', '');

Вышеупомянутая строка не очищала встроенный стиль, он был таким же, как исходный вывод для элемента. Что мне нужно использовать, чтобы очистить встроенный стиль для этого элемента?

Встроенный стиль для элементов, представленных переменной this в цикле, имеет следующий встроенный стиль: style="position: absolute; left: 0px; top: 0px;"

где слева - либо "0px", либо, например. "350px" и где для верхней части не установлено значение "0px" для всех элементов (но здесь это не важно)...

Я наткнулся на этот пост: jQuery.css(слева) возвращает auto вместо фактического значения в Chrome

где я думал, что нашел решение... $jquery(this).position().left; проблема в том, что это всегда возвращает мне "0", что неверно... поскольку каждый второй элемент должен иметь значение left="350px", а не "0px"

В настоящее время у меня есть этот код jquery непосредственно перед закрывающим тегом body ... может быть, это как-то связано с этой проблемой ... Но я подумал, что это не должно быть причиной, поскольку все стили, к которым я пытаюсь получить доступ, являются встроенными.


person user1742543    schedule 20.10.2013    source источник
comment
попробуйте .offset или .position (различия см. в API). Кроме того, что такое $jquery? другой псевдоним для $ и jquery?   -  person Dave    schedule 21.10.2013
comment
Я пробовал как .offset, так и .position. .offset всегда возвращает 0, а .position всегда возвращает 230.5. Ни один из них не показывает фактическое значение, установленное во встроенном стиле для div. $jquery — это псевдоним для $.   -  person user1742543    schedule 21.10.2013
comment
Было бы полезно, если бы вы могли опубликовать образец своего html или jsfiddle.   -  person spacebean    schedule 21.10.2013
comment
Сократите свой вопрос до просто вопроса и опубликуйте решение как ответ на вопрос. Однако при размещении вопросов лучше опубликовать полный вопрос, включая (соответствующий минимальный/sscce) HTML и JavaScript/jQuery. . И, пожалуйста, не добавляйте слово «решено» к заголовку вашего вопроса, примите ответ и позвольте системе обозначить, что он был решен (если вы хотите принять свой собственный ответ, это нормально, хотя я считаю, есть два дня ожидания, прежде чем вам будет разрешено это сделать).   -  person David says reinstate Monica    schedule 21.10.2013


Ответы (1)


Вы пытаетесь получить ширину из #thediv или из .someclass? Если вам нужна ширина из #thediv, вам нужно использовать parent: $(this).parent().css("left");, так как контекстом этого внутри каждого цикла является div someclass.

См. пример здесь: http://jsfiddle.net/thespacebean/NJ9ny/

О, и чтобы полностью удалить встроенный CSS, вы можете использовать .removeAttr("style")

person spacebean    schedule 20.10.2013
comment
Я пытаюсь получить левое свойство атрибута стиля дочерних элементов #thediv, то есть дочерних элементов, использующих класс .someclass . Мне нужно левое значение свойства, поскольку оно установлено во встроенном стиле для каждого из div. Я также пытался использовать .removeAttr(style) и ничего не удалял... - person user1742543; 21.10.2013
comment
Это должно работать так же, как в моем примере, поэтому, если вы не против опубликовать соответствующие части вашего html, может быть проще найти источник проблемы. - person spacebean; 21.10.2013
comment
Извините за это... Я пытался прочитать свойство, которое не было установлено, когда я пытался получить к нему доступ. Неудивительно, почему это не сработало... В любом случае... спасибо тем, кто пытался мне помочь :) - person user1742543; 21.10.2013