Я мог неправильно понимать то, что происходит, но от того, что я могу сказать, что получаю элемент DOM и не объект jQuery, когда я использую .each()
.
Ниже не будет работать как this
обращается к элементу DOM и не объекту jQuery
$("span[id$='_TotalItemCost']").each(function() {
var someText = this.text();
});
Измененный для преобразования this
к объекту jQuery и все хорошо
$("span[id$='_TotalItemCost']").each(function() {
var someText = $(this).text();
});
Действительно ли там что-то броско с моим селектором? JQuery .each()
документация неправильно и это не объект jQuery, а скорее элемент DOM, возвращенный .each()
?
В документации нет ничего неправильного, но вы можете неправильно понять, что такое объект jQuery.
Объект jQuery возвращается функцией $ ()
. Итак, $ ("span [id $ = '_ TotalItemCost']")
- это один объект jQuery, который содержит каждый выбранный элемент span.
Использование .each ()
будет перебирать элементы, содержащиеся в объекте jQuery. Вот почему это узел DOM, а не объект jQuery.
Вы поступили правильно, применив $ (this)
для использования методов jQuery для этого конкретного элемента.
@Vincent Robert, вы в значительной степени прекрасно это резюмировали, но позвольте мне немного расширить это.
хотя JQuery - это функция, прототипы которой расширяют ее корневой экземпляр, она действует больше как объект.
Если вы отделите объекты от методов / функций и посмотрите на них по отдельности, вы поймете, как построен интерфейс jQuery.
Я считаю $ ()
объектом, а each ()
- методом. вы инициализируете объект с помощью «селектора» jQuery $ ()
, который, в свою очередь, возвращает объекты, содержащие только элементы / данные, выбранные вами в селекторе $ ()
.
здесь есть методы / функции, которые вы можете запускать непосредственно с выбранным контентом, но методы не должны возвращать объект jquery, потому что большую часть времени там возвращаются не узлы, а просто строки или логические значения, поэтому они должны быть заключены в объект jQuery. было бы бессмысленно.
поскольку ваш OP основан на каждой функции, вы не должны получать там объект jquery, потому что каждый из них не предназначен специально для узлов и элементов как таковых
, например, вы хотите, чтобы здесь был объект jquery?
$({a:'1',b:'2'}).each(function(){
});
это было бы неправильно и бессмысленно, поэтому методы возвращают / не должны возвращать объекты, если только метод не предназначен для возврата синглтона или специально разработан для возврата объекта.
Также, когда я говорю «объект», я говорю не об объектах json как таковых, а об объектах метода / прототипирования.
Надеюсь, это поможет.