解开不做它应该做的事情

时间:2010-05-26 09:43:53

标签: javascript unbind jquery-1.4

我必须遗漏一些基本的东西,但是因为我的生活无法解决问题。

这个想法是当你点击那个点击事件然后解除绑定。另请注意警报('test')未触发。

  $(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

非常感谢

2 个答案:

答案 0 :(得分:0)

绑定后你立即解绑!你需要在处理程序(hide)内取消绑定以确保它已被执行,否则你可能会考虑这一点:

$(document).ready(function() {
    $('#menu .cat-item a').one("click", hide);
});

one将确保每个元素只执行一次处理程序。

答案 1 :(得分:0)

由于jQuery支持流畅的编程风格bind实际上返回this对象。

因此,在这种情况下,您首先添加处理程序,然后立即删除它。

正确的版本是

$(document).ready(function() {
    $('#menu .cat-item a').each( function() {
         $(this).bind('click',hide);
    });
});


function hide(){
    $(this).unbind('click',hide);
    $("#home-content").fadeIn();
    $("#home-page").fadeOut();
}