【问题标题】:jquery live problemjquery直播问题
【发布时间】:2011-08-22 08:44:10
【问题描述】:

各位,我这里有问题,哪位可以帮忙?^^

在这个程序中我尝试使用 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');

我会死的......这是我想做的最后一件事。 我,但事件仍然绑定。 我想知道如何解决这个问题.. 尝试了几个小时 edi .. 谢谢^^

我可以把实时代码放在这里。 我有很多这样的 div

{$lang.report}
  • {$lang.re.spam}
  • 然后在这里直播 $(".report").live('点击',function(){

                                if($(this).next(".report_type").is(':visible')){
                                        $(this).next(".report_type").hide();
                                }else{
                                        $(this).next(".report_type").show()
                                }
                                        return false;
                                });
    

    函数report_comment(category,comment_id,report_type) { 等等等等等等 $('#report'+comment_id).die('click'); }

    【问题讨论】:

      标签: javascript jquery


      【解决方案1】:

      尝试将处理程序传递给死

      $('.test').die('click',test2);

      【讨论】:

      • 但是在 test2 里面我应该放什么?函数 test2(){ $('#rpt1').die('click'); } 它看起来和我一样
      • 我尝试了这两种解决方案,但似乎不能,无论如何谢谢你的帮助
      【解决方案2】:

      您需要将回调函数作为第二个参数传递 $('.test').die('click',test2);

      见:http://api.jquery.com/die/#die2

      编辑

      我误解了你的问题。

      试试这个$('#rpt1').removeClass('test'); 从其中一个 div 中删除实时事件

      示例:http://jsfiddle.net/herostwist/TEZhb/

      【讨论】:

      • 我在回答中假设测试类仅用于事件而不用于样式。
      • 这种方式可以工作,但是我的伙伴要求我在不删除类的情况下这样做,这让我很头疼,它也用于样式......我想制作一个虚拟类来实现这一点....
      • 替代方法是不使用live,而是在通过ajax 加载内容之后附加常规点击事件。然后,您可以使用 unbind 从单个 div 中删除点击事件
      【解决方案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();
              }
           });
      

      【讨论】:

      • 我认为这行不通,如果我单击一次,则其他 div 无法单击,无论如何感谢您的帮助 ^^
      • 但是我已经在我的问题上添加了真实的代码,你可以看看^^ thx
      • @Leon 请澄清你的 html 和 jquery
      【解决方案4】:

      我认为你错过了来自.die() 的一个非常重要的和平信息

      注意:在 jQuery 1.4.4 之前,为了让 .die() 正常工作,与它一起使用的选择器必须与最初与 .live() 一起使用的选择器完全匹配。

      他们给出的每一个点击和死亡的例子都应用于同一个选择器

      【讨论】:

      • 是的,我试图做的是使用不同的选择器。我注意到了,我遇到了不同选择器的问题,但就我而言,我需要不同的选择器
      • 那么不可能吗?
      • @Leon 虽然我不是 100% 肯定像@Nick Craver 这样的人可能知道,但对我来说似乎是这样的?
      猜你喜欢
      • 1970-01-01
      • 2019-07-15
      • 1970-01-01
      • 2011-12-15
      • 1970-01-01
      • 1970-01-01
      • 2014-05-09
      • 2018-06-03
      • 1970-01-01
      相关资源
      最近更新 更多