javascript中返回false和event.preventDefault的不同之处是什么?

What is the different return false and event.preventDefault in javascript?

本问题已经有最佳答案,请猛点这里访问。

我搜索了一个类似的问题,有人声称return falseevent.stopPropagation()event.preventDefault()相似。但我已经尝试过声称的例子,但它不起作用。代码如下。

1
2
3
4
5
6
7
8
9
10
11
<ul>

   
<li>

        baidu.com
   
</li>


</ul>

这是HTML代码。

1
2
3
4
5
6
7
8
9
10
11
12
ul.addEventListener('click', function(event) {
    alert('ul');
}, false);

li.addEventListener('click', function() {
    alert('li');
}, false);

a.addEventListener('click', function(event) {
    alert('a');
    return false;
}, false);

这是JS的代码。

如果返回错误,则同时为event.stopPropagation()event.preventDefault()

它只会发出警告,但最后会发出三次警告。


  • e.preventDefault()防止违约行为
  • e.stopPropagation()防止其他事件处理程序(在父元素和子元素上)被激发
  • e.preventImmediatePropagation()防止在同一元素上激发其他事件处理程序
  • return false用于完成上述所有工作

请注意,return false已被弃用,因此请尝试使用事件的方法。


您的代码还没有包含足够的内容,我无法确定您要做什么-但下面是对您询问的术语的解释:

event.preventDefault()

event.stopPropagation()

event.stopImmediatePropagation()

是3个jquery函数,它们在如何阻止事件和处理程序执行方面略有不同。

  • event.preventDefault()用于防止元素的默认行为。例如,如果它是一个

  • event.stoppropagation()和event.stopImmediatePropagation()只是略有不同。除了停止元素的默认行为之外,当您希望防止某个事件冒泡到DOM树上时,还可以使用event.stopperopogation()和event.stopImmediatePropation(),同时防止任何父处理程序收到该事件的通知。如果使用event.stopImmediatePropagation(),它不仅会拖拽event执行,而且会阻止它冒泡到dom中的父元素,而且还会阻止将来对该元素调用任何处理程序。例如,如果它是一个

return false;

另一方面,可以说是存在于许多编程语言中的一种基本编程约定,而javascript就是其中之一。

  • 首先,与jquery示例不同,它不是函数。return表示返回一个值(通常是变量或函数的输出)。第二部分只是一个布尔值false

    它可能与上面的jquery函数相关联的一个原因是它经常在内联HTML代码中使用,比如

    1
    Go To Website

如果需要防止过早提交表单,也可以使用EDOCX1[15]元素。例如,不完整表单的表单验证,在这种情况下,您可以这样做

1
2
3
4
5
6
7
8
9
10
11
12
    function validateForm() {
        var subject = document.forms["contact"]["subject"].value;
        var message = document.forms["contact"]["message"].value;
        var name = document.forms["contact"]["name"].value;
        var email = document.forms["contact"]["email"].value;

        if ( subject == null || subject =="" || subject =="" || message == null || message =="" || message =="" || name == null || name =="" || name =="" || email == null || email =="" || email =="" ) {
            $('#form-incomplete').html('Please fill out all the fields before sending email');

            return false;
        }
    }

您经常会看到return false;使用这种方式:由于if条件(即if (some_condition_is_present) { return false; // i.e. halt your function }),这显然是您的代码所缺少的。如果我正确理解你,你会想尝试

1
    WEBSITE LINK

然后在页面上的其他地方,您可以有如下脚本:

1
2
3
4
5
6
    $("a.some_class").on("click", function(e) {
          e.preventDefault();
          // now the link won't go to http://some-other-website.com
          // but you can still bind other behavour to the element such as alert
          // console log or trigger another function
    });

1
2
3
4
5
6
7
    $("a.some_class").on("click", function(e) {
          e.stopPropogation();
          // now the link won't go to http://some-other-website.com
          // and the other elements of the DOM aren't aware that it's been clicked
          // but we can still bind other behaviour like we could:
          alert("user not directed to http://some-other-website.com");
    });

1
2
3
4
5
6
7
8
9
    $("a.some_class").on("click", function(e) {
          e.stopPropogation();
          // now the link won't go to http://some-other-website.com
          // and the other elements of the DOM aren't aware that it's been clicked
          // but we can't bind other behaviour to the element.
          // If we try:
          alert("user not directed to http://some-other-website.com");
          // it no longer alerts
    });

1
2
3
4
5
6
7
8
    $("a.some_class").on("click", function(e) {
          if (!foo) {
              return false; // if our variable is undefined or null we can directly exit our function without executing any code
          } else {
              a.href = foo;
              $("a.some_class").trigger("click"); // however, if our variable is defined we use that variable's value to change where the href of the  element will redirect the user's browswer
          }
    });


按照你的代码。如果在"a"上使用event.preventDefault()。如果您有任何链接,它将不会重定向到该链接。默认操作被阻止。

如果在"a"上使用event.stoppropagation()。只有"A"单击事件将被激发,其余将停止。

我需要解释"返回错误"吗?