on(events,[selector],[data],fn)
•events:一個或多個用空格分隔的事件類型和可選的命名空間,如"click"或"keydown.myPlugin" 。
•selector:一個選擇器字符串用於過濾器的觸發事件的選擇器元素的后代。如果選擇器為null或省略,當它到達選定的元素,事件總是觸發。
•data:當一個事件被觸發時要傳遞event.data給事件處理函數。
•fn:該事件被觸發時執行的函數。 false 值也可以做一個函數的簡寫,返回false。
這樣一個需求,如果用live()方法實現的話 非常簡單,容易理解。
$('nav li, #sb-nav li, #help li').live('click', function () { // code... });
jquery在1.7版本后,建議大家用on方法代替之前的bind、live、delegate方法。
那上面一句如果用on的話,怎么寫呢?
其實查看live源碼就知道,live實際是委托doucment進行事件委派的。
按照這個思路,可以將on方法綁定到document即可。
$(document).on('click', '#header .fixed-feedback-bn, #sb-sec .feedback-bn', function () { // code... });
還有一種情況,on()方法綁定多個事件,可以這樣寫:
$("table.planning_grid").on({ mouseenter: function() { // Handle mouseenter... }, mouseleave: function() { // Handle mouseleave... }, click: function() { // Handle click... } }, "td");
最后,用on()方法綁定多個選擇器,多個事件則可以這樣寫:
$(document).on({ mouseenter: function() { // Handle mouseenter... }, mouseleave: function() { // Handle mouseleave... }, click: function() { // Handle click... } }, '#header .fixed-feedback-bn, #sb-sec .feedback-bn');