jQuery - .trigger () не работает после .load () - PullRequest
4 голосов
/ 11 июля 2011

Это мой код:

function refresh () {   
    sub_tab=$("#hid").val();
    $("#content").load(cur_tab+'.php',function () {
        alert(sub_tab);
        $("#pd").trigger('click');
    });     
}

Строка $("#pd").trigger('click'); не работает. Однако, если я выполняю эту строку как отдельную операцию (без load), она работает.
#pd - это <div>, который загружается на страницу, содержащую вышеуказанный скрипт.
Есть идеи?

# pd - это внутри другой страницы PHP, которая загружается в #content , Теперь, когда я нажимаю #pd, он работает нормально, просто событие триггера не работает, когда я перезагружаю файл PHP в # content

1 Ответ

1 голос
/ 11 июля 2011

Если событие click связано с #pd, а #pd находится внутри #content, вы теряете привязку каждый раз, когда перезагружаете контент, потому что #pd уничтожается и воссоздается.

Попробуйте использовать делегат для привязки к событию - это намного удобнее с вызовами Ajax и динамическим DOM:

$("#content").delegate("#pd", "click", function(){
    // click event
});

Позже, когда вы позвоните $("#pd").trigger('click');,должен увидеть ожидаемые результаты.

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