Почему это работает в jQuery? - PullRequest
2 голосов
/ 17 ноября 2011

Я пытаюсь понять, почему что-то работает так же, как в jQuery. Когда я хочу применить расширение jQuery, например datatables , я запускаю команду:

$("#some_id").datatables(.. parameters ..);

Я не знаю, почему это работает, очевидно, у элемента DOM не было метода datatables() заранее.

Спасибо!

Ответы [ 4 ]

5 голосов
/ 17 ноября 2011

$("#some_id") не возвращает HTML-элемент DOM, он возвращает объект JQuery, обертывающий его.

Этот объект JQuery имеет метод datatables.

4 голосов
/ 17 ноября 2011

Причина этого в том, что вы не делаете этот вызов для элемента DOM - вы делаете это для объекта jQuery , который хранит информацию об объектах DOM, на которые он должен влиять.

И причина .datatables() в том, что какой-то плагин (вероятно, DataTables ) сделал его доступным следующим образом:

jQuery.fn.my_foo_func = function(){
    console.log(jQuery(this));
};

Если вы примените вышеизложенное, вы будетеспособен сделать что-то подобное:

$("#some_id").my_foo_func();

, который передаст на консоль объект (ы) jQuery, для которого вы его вызвали.

Достаточно ли ясно?

0 голосов
/ 17 ноября 2011

Вы установили плагин, который добавил метод .datatables () к jQuery () объекту , часто сокращаемому как $ ().Если вы заинтересованы в создании собственных методов объекта jQuery (), , вот поиск Google, чтобы вы начали .

0 голосов
/ 17 ноября 2011

После вызова $("#some_id") у вас больше нет объекта DOM, но есть объект jQuery. Объект DOM доступен с помощью $("#some_id")[0].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...