不同步骤绑定事件,以及不同事件的执行顺序
不同方法绑定事件,以及不同事件的执行顺序
$(document).ready(function(){ $("input[name='n']").on("keyup",function(){ console.log("name"); }); $(".c").on("keyup",function(){ console.log("class"); }) $("#a").on("keyup",function(){ console.log("id"); }); })
我曾经一直天真地以为应该是以id绑定的先执行,今天试了才发现是按照定义的顺序执行,哪个写在前面哪个就先执行。。。
如果分开文件定义,也是一个道理,写在前面的文件会先执行。
上一篇提到delegate,我试了一下这个:
<html> <head> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="test.js"></script> <script type="text/javascript"> $(document).ready(function(){ $(".input_class").on("keyup",function(){ console.log("class"); }); $("#div_id").delegate("input","keyup",function(){ console.log("delegate"); }); }); </script> </head> <body> <div id="div_id"> <input type="text" id="input_id" name="input_name" class="input_class"/> </div> </body> <script type="text/javascript" src="test.js"></script> </html>
test.js:
$(document).ready(function(){ $("input[name='input_name']").on("keyup",function(){ console.log("name"); }); $("#input_id").on("keyup",function(){ console.log("id"); }); })
test.js写了两遍,中间在html离插了一段。输出:
name
id
class
name
id
delegate
test.js执行了两遍才轮到delegate,果然不是一个爹生的!!