2012-03-12 2 views
1
$("#toggle-banner-body").live("click", function(){ 
     $("#banner-details").slideToggle(); 
}); 

Когда я нажимаю #toggle-banner-body, тогда #banner-details toggle не работает. #toggle-banner-body и #banner-details - это вновь созданные элементы, вот почему я использовал там живую функцию. Есть ли способ идентифицировать элемент #banner-details? Я имею в виду, как использовать живую функцию для эффектов.jQuery live for effects

+0

Этот код СМОТРЕТЬ ОК. Можете ли вы бросить jsfiddle там, чтобы мы могли видеть, что происходит? Также 'live' устарел. Проверьте функции '.on()' и '.off()'. – Dutchie432

+0

Можете ли вы использовать jsfiddle.net, чтобы дать нам пример кода? –

+0

У меня проблема только с этим кодом. это сайт drupal. – subhojit777

ответ

1

.live() осуждается, теперь с JQuery 1.7.1 вы можете использовать .on():

$(document).on(event, selector, handler) // live 
$(selector).on(event, handler)   // bind 

$("#parent").on("click","#element", function(){ 
     $("#banner-details").slideToggle(); 
}); 
+0

, когда я использую ваш фрагмент кода, он дает следующую ошибку: Uncaught TypeError: Object # не имеет метода 'on' – subhojit777

+0

@ subhojit777 вы уверены, что используете новейший jQuery? –

+0

@ subhojit777 вот рабочая демонстрация с использованием .on(), как в моем ответе: http://jsbin.com/eyezij/edit#javascript,html,live –

0

Оберните свой код в ready handler:

$(function(){ 
    $("#toggle-banner-body").live("click", function(){ 
     $("#banner-details").slideToggle(); 
    }); 
}); 

Примечание, что live() устарел и не будет работать в будущих версиях jQuery, вместо этого используйте on().