Проблемы с Ajax при загрузке в div. Jquery - PullRequest
0 голосов
/ 03 марта 2011

Я не очень хорош в javascript, и я пытаюсь загрузить некоторые изображения в div через внешнюю HTML-страницу с некоторой функцией непрозрачности в jquery.Существует ли простая функция, которая будет повторно применять сценарии, необходимые после выполнения вызова ajax.Я видел jquery вживую, но прежде чем начать рвать на себе волосы, я подумал, был ли я на правильном пути.Или есть действительно простой метод, который мне не хватает.

1 Ответ

4 голосов
/ 03 марта 2011

Да, live и delegate ваши друзья.

В частности, вы должны попытаться использовать delegate, потому что события, связанные с live, всплывают на всем протяжении DOM до того, как их поймают.

Синтаксис для delegate:

$("#parent_element").delegate(
    "#child_selector_event_occurs_on", 
    "click" // <-- Event to declare a handler for
    function() { ... });

На странице связанной документации для delegate есть несколько примеров.

Edit:

Мой ответ выше предполагает, что вы теряете обработчики событий, связанные с контентом, который заменяется или обновляется с помощью AJAX. Если вам необходимо выполнить такие действия, как повторная инициализация виджетов или запустить другой пользовательский код, вам будет полезно переместить этот код в общую функцию и вызывать ее при успешной загрузке нового содержимого (и в вашем обработчике document.ready).

Например:

function init() {
    /* Write initialization code here */
}

$(document).ready(function() { init(); });

/* Later on, when you reload the content: */
$("#ajaxified").load("foo.html", function() { init(); });

Другой альтернативой является плагин livequery, который я не использовал, но слышал о хороших вещах. В частности, вы бы посмотрели на функциональность вспомогательной функции:

$('#selector') 
    .livequery(function(){ 
        /* Write code here to execute when a new element matching the 
           selector is added. */
        init();
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...