Как применить jQuery к элементам, недоступным в Document.Ready? - PullRequest
1 голос
/ 09 сентября 2010

Веб-сайт, который я разрабатываю, использует вкладки jQuery UI до , загружают контент через AJAX (в этом случае каждая вкладка состоит из частичной страницы). Это хорошо работает, и я доволен этими результатами. Однако одна проблема, с которой я неоднократно сталкивался, заключается в том, что когда я включаю jQuery в мой файл master.js (который я использую для Javascript для всего сайта), он НЕ применяется ко всему, что загружается через AJAX. Например, я попробовал что-то простое, например:

// Theme all the buttons with jQuery UI themes.
$('input:button').button();

Однако все кнопки на вкладках не имеют соответствующей тематики.

Как мне это исправить? Я что-то думал с функцией jlu (.live () ), но события «load» и «ready», похоже, не работают. Это стало довольно неприятной проблемой, поэтому любая помощь, которая может быть оказана, будет наиболее ценной.

Ответы [ 2 ]

1 голос
/ 09 сентября 2010

Ну, плагин livequery (http://docs.jquery.com/Plugins/livequery) раньше использовался для многих подобных вещей.Однако это не самый эффективный способ решения проблемы.

Если вы добавляете контент через AJAX, почему бы просто не переназначить обработчики контента после его добавления?

0 голосов
/ 09 сентября 2010

Вы можете применить его к этим новым элементам в вашем обратном вызове AJAX:

$.ajax({
    url:'/some/path',
    success: function( resp ) {
        var $newElements = $(resp);  //create jQuery object of new elements
        $newElements.find('input:button').button();  // call .button() on inputs
        $newElements.appendTo('body');  // append to wherever
    }
});

Я не знаю, что происходит в вашем обратном вызове AJAX, но это должно дать вам общее представление.

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