使用die()之后重新启用live()点击事件?
题
我无法通过堆栈解决我的问题。我在下面有Live()函数。您可以看到我要停止在功能运行时第二次单击的按钮,然后重新启动。该按钮死亡未连接,但不会再次绑定...:S
$('.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');
}
});
解决方案
无需解开和重新固定,只需使用标志:
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);
}
});
您的最后一行代码不会将任何内容绑定到点击处理程序。您必须绑定功能
$('.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);
});
也应该使用JQUERY 1.42至1.6倍
- 代表() 与未来元素结合
- undelegate() 为委派事件打开
在JQuery 1.7+中
不隶属于 StackOverflow