解除绑定不做应该做的事
我一定错过了一些基本的东西,但我一生都无法解决它。
这个想法是当您单击时,单击事件就会解除绑定。另请注意,警报('测试')未触发。
$(document).ready(function() {
$('#menu .cat-item a').each( function() {
$(this).bind('click',hide).unbind('click',hide);
});
});
function hide(){
alert('test')
$("#home-content").fadeIn();
$("#home-page").fadeOut();
}
使用jquery 1.4
非常感谢
丹
I must be missing something fundamental, but for the life of me cant work it out.
the idea is when u click that click event is then unbind. Also to note the alert('test') is not firing.
$(document).ready(function() {
$('#menu .cat-item a').each( function() {
$(this).bind('click',hide).unbind('click',hide);
});
});
function hide(){
alert('test')
$("#home-content").fadeIn();
$("#home-page").fadeOut();
}
Using jquery 1.4
Many Thanks
Dan
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
由于 jQuery 支持流畅的编程风格,
bind
实际上返回this
对象。因此,在这种情况下,您首先添加处理程序,然后立即删除它。
正确的版本是
Since jQuery supports a fluent programming style
bind
actually returns thethis
object.So in this case you are first adding the handler and then immediately removing it.
The correct version is
绑定后立即解除绑定!您需要在处理程序中取消绑定(
hide
)以确保其执行,否则您可能会考虑这样做:one
将确保每个元素仅执行一次处理程序。You are unbinding immediately after you bind! You'll need to unbind within the handler (
hide
) to ensure that it's executed, otherwise you might consider this instead:one
will ensure that a handler is only executed once per element.