What is the different return false and event.preventDefault in javascript?
我搜索了一个类似的问题,有人声称
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的代码。
如果返回错误,则同时为
它只会发出警告,但最后会发出三次警告。
e.preventDefault() 防止违约行为e.stopPropagation() 防止其他事件处理程序(在父元素和子元素上)被激发e.preventImmediatePropagation() 防止在同一元素上激发其他事件处理程序return false 用于完成上述所有工作
请注意,
您的代码还没有包含足够的内容,我无法确定您要做什么-但下面是对您询问的术语的解释:
是3个jquery函数,它们在如何阻止事件和处理程序执行方面略有不同。
event.preventDefault()用于防止元素的默认行为。例如,如果它是一个
,它将不再是可点击的,任何绑定到它或 onclick="" 代码的处理程序都不会被触发。http://api.jquery.com/event.preventdefault/
event.stoppropagation()和event.stopImmediatePropagation()只是略有不同。除了停止元素的默认行为之外,当您希望防止某个事件冒泡到DOM树上时,还可以使用event.stopperopogation()和event.stopImmediatePropation(),同时防止任何父处理程序收到该事件的通知。如果使用event.stopImmediatePropagation(),它不仅会拖拽event执行,而且会阻止它冒泡到dom中的父元素,而且还会阻止将来对该元素调用任何处理程序。例如,如果它是一个
,它将不再是可点击的,并且您将无法在以后的时间绑定将来的行为,例如 onclick="" ,而不强制刷新页面。http://api.jquery.com/event.stopImmediatePropagation/
http://api.jquery.com/event.stoppropagation/
另一方面,可以说是存在于许多编程语言中的一种基本编程约定,而javascript就是其中之一。
首先,与jquery示例不同,它不是函数。
return 表示返回一个值(通常是变量或函数的输出)。第二部分只是一个布尔值false 。它可能与上面的jquery函数相关联的一个原因是它经常在内联HTML代码中使用,比如
1Go 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; } } |
您经常会看到
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"单击事件将被激发,其余将停止。
我需要解释"返回错误"吗?