2012-01-01 51 views
1

我使用Firefox和JQuery:JQuery的隐藏()行为

下面的代码隐藏内容简要,但随后重新显示内容:

$("#calorielink").click(function() { 
       $("#A").hide(); 
       $("#B").hide(); 
      }); 

下面的代码正确隐藏内容:

$("#calorielink").click(function() { 
       $("#A").hide(); 
       $("#B").hide(); 
       return false; 
      }); 

为什么return语句有效?

回答

3

return false为您做以下的事情在事件处理程序:

  • 防止的事件的默认操作。假设#calorieLinka,这意味着用户没有被导向到新页面。
  • 停止事件的传播。该事件不会冒泡DOM。换句话说,如果将事件处理程序附加到此元素的“上游”元素上,则不会通知事件。
  • 立即从您的回调函数中返回。

通常情况下,你只是想第一个(你只需要阻止默认动作):

$("#calorielink").click(function(event) { 
    event.preventDefault(); // Prevent the default action from occurring. 
    $("#A").hide(); 
    $("#B").hide(); 
}); 

我一般会建议不要在事件处理程序使用return false。想想你想要的东西在你的事件处理程序发生,即使你同时需要的是return false完成的事情,它更表现写:

event.preventDefault(); 
event.stopPropagation(); 

Here's什么return false其实就是做一个良好的阅读。

包括return false或停止的事件默认动作(event.preventDefault())将导致您的代码运行事件的默认行为将发生为好。这可能就是为什么你看到代码快速运行,然后效果消失。

+0

这正是它是什么 - 谢谢! – sdasdadas 2012-01-01 21:59:02

+0

@sdasdadas:没问题!乐意效劳。 – 2012-01-01 21:59:31

1

返回false可防止浏览器加载使用<a>元素的href属性设置的url。

我想,元素链接到页面本身,因此重新加载页面。