为什么需要在jquery中为.click函数设置“return false”语句

时间:2011-01-16 21:17:14

标签: javascript jquery click

示例:

$("#testdiv").click( function( )
 {
     $("#testdiv2").show( "slow" );
     return false;  // why is this statement required?
 } );

4 个答案:

答案 0 :(得分:6)

return false;会阻止锚标记执行默认操作

jQuery替代方案是preventDefault()

$("#testdiv").click(function(e) {
    e.preventDefault();
    $("#testdiv2").show("slow");
});

答案 1 :(得分:5)

在事件处理中返回false会做两件事:

  1. 如果您有锚标记,则会阻止锚点跟踪链接

  2. 它将停止事件传播(冒泡)。例如

    < div id='outer' onclick="alert('hello')" >  
        < div id='inner'>
            <!-- Your stuff -->
        < /div>
    < /div>
    

    $("#inner").click(function(event){
        // Your code
        return false
    })
    
  3. 如果你的函数返回false,当有人点击内部div时,alert("hello")不会被调用。返回false与调用

    相同
    event.preventDefault();
    event.stopPropagation();
    

    一句警告,此行为仅适用于jquery

    event.preventDefault() vs. return false

    来源:John Resig

答案 2 :(得分:1)

没有返回,锚标记将执行它通常做的任何事情。例如,如果您执行<a href="#">,它将滚动到页面顶部。由于某些浏览器不会视为特殊,除非/直到有'href'属性,<a href="#">是制作javascript操作链接的最常用方法。

答案 3 :(得分:1)

没有要求使用jQuery的click事件处理程序返回false。只有在您希望阻止默认锚操作发生时才需要它。如果您想在仍然允许默认操作发生的情况下进行操作,例如使用新标识<a href="#somelocation">click</a>更新location.hash,然后对click事件执行某些操作,则不需要提供return false;