Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 使用die()后重新绑定live()单击事件?_Jquery_Bind_Live_Unbind_Die - Fatal编程技术网

Jquery 使用die()后重新绑定live()单击事件?

Jquery 使用die()后重新绑定live()单击事件?,jquery,bind,live,unbind,die,Jquery,Bind,Live,Unbind,Die,我无法解决在堆栈中搜索的问题。下面是我的live()函数。您可以看到我如何在函数运行时停止再次单击按钮,然后重新绑定。按钮未绑定就死掉了,但它不再绑定…: $('.control-left, .prevActive').live('click',function(){ var firstSlide = $('.slider li:first-child'); if(firstSlide.attr('class') != 'active'){ $('.co

我无法解决在堆栈中搜索的问题。下面是我的live()函数。您可以看到我如何在函数运行时停止再次单击按钮,然后重新绑定。按钮未绑定就死掉了,但它不再绑定…:

$('.control-left, .prevActive').live('click',function(){

    var firstSlide = $('.slider li:first-child');

    if(firstSlide.attr('class') != 'active'){   
        $('.control-left, .prevActive').die('click');   
        moveSlider('left');
        $('.control-left, .prevActive').live('click');
    }

});

最后一行代码没有将任何内容绑定到click处理程序。你必须绑定一个函数

$('.control-left, .prevActive').live('click', function () { code here });
在你的情况下,你可能会想这样做

var myspecialclickfunction = function(){

  var firstSlide = $('.slider li:first-child');

  if(firstSlide.attr('class') != 'active'){   
      $('.control-left, .prevActive').die('click');   
      moveSlider('left');
      $('.control-left, .prevActive').live('click', myspecialclickfunction);
};

$(document).ready(function () {
  $('.control-left, .prevActive').live('click',myspecialclickfunction);
});

另外,您应该使用jquery1.42到1.6x

  • 用于绑定到未来元素
  • 用于解除与委派事件的绑定
在jQuery1.7中+

  • ,并已在
  • ,并已在
  • 此外,还添加了允许绑定事件只运行一次的

最后一行代码不会将任何内容绑定到单击处理程序。你必须绑定一个函数

$('.control-left, .prevActive').live('click', function () { code here });
在你的情况下,你可能会想这样做

var myspecialclickfunction = function(){

  var firstSlide = $('.slider li:first-child');

  if(firstSlide.attr('class') != 'active'){   
      $('.control-left, .prevActive').die('click');   
      moveSlider('left');
      $('.control-left, .prevActive').live('click', myspecialclickfunction);
};

$(document).ready(function () {
  $('.control-left, .prevActive').live('click',myspecialclickfunction);
});

另外,您应该使用jquery1.42到1.6x

  • 用于绑定到未来元素
  • 用于解除与委派事件的绑定
在jQuery1.7中+

  • ,并已在
  • ,并已在
  • 此外,还添加了允许绑定事件只运行一次的

无需解除绑定和重新绑定,只需使用一个标志:

var running = false;
$('.control-left, .prevActive').live('click',function(){
    var firstSlide = $('.slider li:first-child');

    if(firstSlide.attr('class') != 'active' && !running){ 
        running = true;
        moveSlider('left');
        running = false;
    }
});

无需解除绑定和重新绑定,只需使用一个标志:

var running = false;
$('.control-left, .prevActive').live('click',function(){
    var firstSlide = $('.slider li:first-child');

    if(firstSlide.attr('class') != 'active' && !running){ 
        running = true;
        moveSlider('left');
        running = false;
    }
});

您没有向.live传递任何函数。。试试这个:

$('.control-left, .prevActive').live('click',function hello(){

    var firstSlide = $('.slider li:first-child');

    if(firstSlide.attr('class') != 'active'){   
        $('.control-left, .prevActive').die('click');   
        moveSlider('left');
        $('.control-left, .prevActive').live('click', hello);
    }

});

您没有向.live传递任何函数。。试试这个:

$('.control-left, .prevActive').live('click',function hello(){

    var firstSlide = $('.slider li:first-child');

    if(firstSlide.attr('class') != 'active'){   
        $('.control-left, .prevActive').die('click');   
        moveSlider('left');
        $('.control-left, .prevActive').live('click', hello);
    }

});

如果您使用的是jQuery 1.7+,那么您应该使用代替
live()
delegate()
。感谢您指出:)如果您使用的是jQuery 1.7+,那么您应该使用代替
live()
delegate()
。感谢您指出:)谢谢,这很有效!我明白我错在哪里了——真是一个愚蠢的错误:)谢谢,这真是一个好机会!我明白我错在哪里了——真是一个愚蠢的错误:)