在我取消绑定之后,我无法重新绑定我的功能。
我想解开对所有siblings()的切换,这似乎有效......然后切换到将兄弟姐妹()重新绑定回原始状态。
这是我的js
function filterme(id, name){
$(id).toggle(function(event) {
event.preventDefault();
$(this).parent().siblings().children().unbind('click');
$(this).parent().siblings().css({opacity: '0.3'}, 800);
elements = $('body').find(name);
$(this).addClass('clicked');
if(elements.length > 0) {
if($(name+':visible')) {
$('div.row:visible').fadeOut('200');
$(name+':visible').parent().fadeIn('200');
}
}
}, function(event) {
event.preventDefault();
$('div.row').fadeIn('200');
$(this).removeClass('clicked');
$(this).parent().siblings().css({opacity: '1'}, 800);
$(this).parent().siblings().children().bind('click');
});
}
filterme('a.under-pound', 'div.lowest-price');
答案 0 :(得分:1)
你需要添加一个这样的点击处理程序:
function myClickHandler(e){
// do something with event (e) here
}
...
.bind('click', myClickHandler);
...
.unbind('click', myClickHandler);
答案 1 :(得分:1)
.bind()方法用于将事件处理程序直接附加到元素。
做的时候:
$(this).parent().siblings().children().bind('click');
你绑定了click事件,但是没有处理程序(没有执行的函数)所以不会发生任何事情。
在脚本的某处,你可能有一个在click事件上执行的函数,如:
$(this).parent().siblings().children().click(function() {
alert('someone clicked me');
});
否则为什么你需要解开click事件开始,你试图摆脱点击事件,然后重新连接点击事件,但只是调用.bind('click');不会这样做,它需要再次设置整个功能。
通常这样做的方法是创建一个函数,如下所示:
function whatToDoIfSomeoneClicks() {
alert('someone clicked me');
}
现在您可以将该函数绑定到事件:
$(this).parent().siblings().children().bind('click', whatToDoIfSomeoneClicks);
然后你可以取消绑定该功能:
$(this).parent().siblings().children().unbind('click', whatToDoIfSomeoneClicks);
并重新绑定相同的函数以重新获取它:
$(this).parent().siblings().children().bind('click', whatToDoIfSomeoneClicks);
从jQuery 1.7开始,您应该将bind()替换为on(),将unbind()替换为off()。
答案 2 :(得分:0)
@ user863739:这是你的代码
$(this).parent().siblings().children().bind('click');
所以你将'click'绑定到......哼哼......到了什么? jQuery之神迫使你添加(至少)一个参数来指定'click'事件将被绑定的内容。它必须被指定为函数参考(如Billy Moon所说)。如果没有这个,就像试图在没有脖子的情况下束缚领带一样。