on(events,[selector],[data],fn)
•events:一个或多个用空格分隔的事件类型和可选的命名空间,如”click”或”keydown.myPlugin” 。
•selector:一个选择器字符串用于过滤器的触发事件的选择器元素的后代。如果选择器为null或省略,当它到达选定的元素,事件总是触发。
•data:当一个事件被触发时要传递event.data给事件处理函数。
•fn:该事件被触发时执行的函数。 false 值也可以做一个函数的简写,返回false。
这样一个需求,如果用live()方法实现的话 非常简单,容易理解。
1 2 3 |
$('nav li, #sb-nav li, #help li').live('click', function () { // code... }); |
jquery在1.7版本后,建议大家用on方法代替之前的bind、live、delegate方法。
那上面一句如果用on的话,怎么写呢?
其实查看live源码就知道,live实际是委托doucment进行事件委派的。
按照这个思路,可以将on方法绑定到document即可。
1 2 3 |
$(document).on('click', '#header .fixed-feedback-bn, #sb-sec .feedback-bn', function () { // code... }); |
还有一种情况,on()方法绑定多个事件,可以这样写:
1 2 3 4 5 6 7 8 9 10 11 |
$("table.planning_grid").on({ mouseenter: function() { // Handle mouseenter... }, mouseleave: function() { // Handle mouseleave... }, click: function() { // Handle click... } }, "td"); |
最后,用on()方法绑定多个选择器,多个事件则可以这样写:
1 2 3 4 5 6 7 8 9 10 11 |
$(document).on({ mouseenter: function() { // Handle mouseenter... }, mouseleave: function() { // Handle mouseleave... }, click: function() { // Handle click... } }, '#header .fixed-feedback-bn, #sb-sec .feedback-bn'); |