текущая проблема jquery

#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}

  • {$lang.re.spam}
  • и затем в режиме реального времени здесь $ («.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

    Пример: http://jsfiddle.net/herostwist/TEZhb

    Комментарии:

    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 может знать?