#javascript #jquery
#javascript #jquery
Вопрос:
ребята, у меня здесь проблема, кто-нибудь 1 может помочь? ^^
в этой программе я пытался использовать live (для решения проблемы ajax)
<div id="rpt1" class="test"></div>
<div id="rpt2" class="test"></div>
<div id="rpt3" class="test"></div>
<div id="rpt4" class="test"></div>
<div id="rpt5" class="test"></div>
$('.test').live('click',test2);
после этого я попытался отключить или отключить один из обработчиков
$('#rpt1').die('click');
если я использую
$('.test').die('click');
я умру весь ….. что является последним, что я хочу делать.
я, но событие все еще привязано.
мне интересно, как это решить .. пытался в течение нескольких часов редактировать..
спасибо ^^
могу ли я поместить здесь текущий код. у меня много таких div
{$lang.report}
и затем в режиме реального времени здесь $ («.report»).live(‘click’,функция(){
if($(this).next(".report_type").is(':visible')){
$(this).next(".report_type").hide();
}else{
$(this).next(".report_type").show()
}
return false;
});
функция report_comment (категория, comment_id,report_type)
{ бла-бла-бла
$(‘#report’ comment_id).die(‘click’);
}
Ответ №1:
Вам нужно передать функцию обратного вызова в качестве второго аргумента $('.test').die('click',test2);
смотрите: http://api.jquery.com/die/#die2
Редактировать:
Я неправильно понял ваш вопрос.
попробуйте это $('#rpt1').removeClass('test');
, чтобы удалить событие live из одного из divs
Комментарии:
1. в своем ответе я предполагаю, что тестовый класс предназначен только для событий, а не для оформления.
2. этот способ может сработать, но мой приятель просит меня сделать это без удаления класса, это то, что вызывает у меня головную боль, это также для стилизации … я думаю о создании фиктивного класса для достижения этого….
3. альтернативой является отказ от использования
live
и вместо этого прикрепление регулярных событий нажатия ПОСЛЕ загрузки содержимого через ajax. Затем вы можете удалить события щелчка из отдельных разделов, используяunbind
Ответ №2:
попробуйте передать обработчик, чтобы умереть
$('.test').die('click',test2);
Комментарии:
1. но что я должен поместить внутри test2?? функция test2 (){ $(‘#rpt1’).die (‘click’); } для меня это выглядит так же
2. я пробовал оба решения, кажется, не может, в любом случае спасибо за помощь
Ответ №3:
Попробуйте это:
$('.test').live('click',function(){
var $id = $("#" $(this).attr('id'));
if($id.next().is(':visible')){
$id.die('click');
$(id).next().hide();
} else {
$id.die('click');
$id.next().show();
}
});
Комментарии:
1. я думаю, что это не сработает, если я нажму один раз, то другой div не сможет щелкнуть, в любом случае, спасибо за помощь ^^
2. но я уже добавляю реальный код к своему вопросу, вы можете взглянуть ^^ спасибо
3. @Leon, пожалуйста, уточните свой html и jquery
Ответ №4:
Я думаю, что вам не хватает очень важной информации из .die()
Примечание: До jQuery 1.4.4, чтобы .die() функционировал правильно, используемый с ним селектор должен точно соответствовать селектору, первоначально использованному с .live().
каждый пример, который они приводят, щелкает и умирает, применяется к одному и тому же селектору
Комментарии:
1. да, то, что я пытался сделать, это использовать другой селектор. я заметил это, и у меня возникла проблема с другим селектором, но в моем случае мне нужен другой селектор
2. так что, это невозможно сделать?
3. @Leon Мне так кажется, хотя я не уверен на 100%, что кто-то вроде @Nick Craver может знать?