event.preventDefault()用法介绍(阻止默认事件)jquery
该方法将通知 Web 浏览器不要执行与事件关联的默认动做(若是存在这样的动做)。例如,若是 type 属性是 "submit",在事件传播的任意阶段能够调用任意的事件句柄,经过调用该方法,能够阻止提交表单。注意,若是 Event 对象的 cancelable 属性是 fasle,那么就没有默认动做,或者不能阻止默认动做。不管哪一种状况,调用该方法都没有做用。浏览器
该方法将通知 Web 浏览器不要执行与事件关联的默认动做(若是存在这样的动做)。测试
例如,若是 type 属性是 "submit",在事件传播的任意阶段能够调用任意的事件句柄,经过调用该方法,能够阻止提交表单。spa
注意,若是 Event 对象的 cancelable 属性是 fasle,那么就没有默认动做,或者不能阻止默认动做。不管哪一种状况,调用该方法都没有做用。code
例子:对象
1 $("a").click(function (e) { 2 alert("默认行为被禁止喽"); 3 e.preventDefault(); 4 }); 5 6 <a href="http://www.baidu.com">测试</a>
event.stopPropagation()用法介绍(阻止冒泡)blog
该方法将中止事件的传播,阻止它被分派到其余 Document 节点。在事件传播的任何阶段均可以调用它。注意,虽然该方法不能阻止同一个 Document 节点上的其余事件句柄被调用,可是它能够阻止把事件分派到其余节点事件
该方法将中止事件的传播,阻止它被分派到其余 Document 节点。在事件传播的任何阶段均可以调用它。ip
注意:虽然该方法不能阻止同一个 Document 节点上的其余事件句柄被调用,可是它能够阻止把事件分派到其余节点。get
event是DOM的事件方法,因此不是单独使用,好比指定DOM
1 <div id="A"> 2 <div id="B"> 3 </div> 4 </div> 5 <script> 6 var a = document.getElementById('A'), 7 b = document.getElementById('B'); 8 function handlera (e) { 9 console.log(e.target); 10 } 11 function handler (e) { 12 console.log(e.target); 13 e.stopPropagation(); 14 } 15 b.addEventListener('click', handler, false); 16 a.addEventListener('click', handlera, false); 17 </script>
点击B,输出:
1 <div id="B"></div>
1 <div id="A"> 2 <div id="B"> 3 </div> 4 </div> 5 <script> 6 var a = document.getElementById('A'), 7 b = document.getElementById('B'); 8 function handlera (e) { 9 console.log(e.target + 'a'); 10 } 11 function handler (e) { 12 console.log(e.target + 'b'); 13 } 14 b.addEventListener('click', handler, false); 15 a.addEventListener('click', handlera, false); 16 </script>
点击B时,输出:
1 [object HTMLDivElement]b 2 [object HTMLDivElement]a
以上例子,不难看出stopPropagation()功能就是阻止了冒泡,上面第二个例子中,没有用这个方法阻止冒泡,当点击子元素时,因为事件冒泡,触发了父元素的click事件,因此第二个例子中会多出现一次输出内容,即为:触发A元素点击事件的输出内容。
jquery中return false等效于同时调用e.preventDefault()和e.stopPropagation();
return false除了阻止默认行为以外,还会阻止事件冒泡。若是手上有一份jquery源代码的话,可查看其中有以下代码:
1 if(ret===false){ 2 event.preventDefault(); 3 event.stopPropagation(); 4 }
以上就是我对preventDefault与stopPropagation的了解,有不少的不足,请你们多多指出,多多留言,谢谢!!!