2015-06-10 3 views
0

($ конечно смысл JQuery)

Например какая разница между $ (это) .addClass ('имя класса'). и это. $. addClass ('className');

+4

Я никогда не видел этого. $. AddClass ('className') –

+0

@RobertMcKee - Это потому, что его не существует :) 'addClass' является частью прототипа и, как результат, недоступен, когда конструктор не был вызван. –

ответ

0

Большая разница.

В первом примере

$(this).addClass('className'); 

вы вызываете конструктор JQuery с this, а затем с помощью API JQuery добавить класс к нему. Я предполагаю, что - это элемент, а не только окно (это то, что this в целом относится без какой-либо области).

Во втором примере

this.$.addClass('className') 

вы обращаетесь к родной элемент (при условии, что это не окно здесь), а затем пытается найти $ свойство на этом элементе. Свойство не будет существовать, и поэтому возникнет ошибка. Если бы вы использовали эту версию скак window, тогда $ было бы свойством (поскольку jQuery является «глобальным»), однако addClass является частью прототипа jQuery и в результате не будет присутствовать там ни в качестве конструктора, который никогда не назывался ,

В заключение первое из них является правильным, а второе не имеет смысла использовать по нескольким причинам.

+0

'$ (this)' означает, что значение 'this' в текущем контексте преобразуется в объект jQuery и поэтому может использоваться с такими методами, как' addClass() 'и такими – brroshan

+0

@brroshan. Вы ошибаетесь. '$()' вызывает функцию jQuery, которая внутренне вызывает конструктор jQuery. Как только конструктор называется прототипом, доступен. Значение, переданное в этом случае, - это элемент, который помещается в массив объекта jQuery, такой как структура. Он не «преобразован» в объект jQuery, объект jQuery содержит ссылку на него. Он не может быть «использован с методами», конструктор объекта jQuery помещает эти методы в экземпляр объекта функции и когда эти методы вызывают, они действуют на элементы в структуре, подобной массиву. –

+0

Ах, я стоял исправлен. Спасибо за разъяснения :) – brroshan

Смежные вопросы