2009-09-02 2 views
1

После загрузки шаблона PHP (используя функцию загрузки JQuery в), этот простой скрипт не делает ДИВ уйти:Сценарий идет призрак, когда динамическое содержимое загружается

$("#trigger").click(function(event){ 
$("#removeThisDIV").hide(); 

HTML-бит:

<p id="trigger">X</p> 

Пытался удалить другие DIV, перед загрузкой - он работает нормально. После загрузки сценарий скончался. Идеи?

Спасибо.

ответ

2

Используйте событие делегации с live, так как после вызова $.load вновь введенные элементы не будут иметь обработчик события клика, связанный с ним:

$("#trigger").live("click",function(event){ 
    $("#removeThisDIV").hide(); 
}); 

В качестве альтернативы, используйте $ .load в обратный вызов:

$('#blah').load('some.html', function() { 
    $("#trigger").click(function() { 
     $("#removeThisDIV").hide(); 
    }); 
}); 

Для работы live вам нужно будет использовать jQuery 1.3 или выше. Надеюсь, что это помогло.

+0

Большое спасибо! Прекрасно работает. –

1

Как упоминает karim79, div, который вы хотите использовать в качестве триггера, не был частью DOM, когда вы назначили функцию щелчка, поэтому у нее нет необходимой функциональности. Конечно, вы можете просто разместить js в самом шаблоне PHP;

<p id="trigger" onclick="$('#removeThisDIV').hide();">X</p> 

Обязательно включите jquery над этим элементом, иначе он вызовет ошибку «$ not detected».

+0

Я бы лучше обработал эти функции из файла сценариев, но спасибо за ваши усилия и внимание. –

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