2013-07-02 70 views
-3
$(function() { 
    $(".items").on('click', 'a', function() { 
     //nothing gets executed here, alert wont come 
     alert("doesn't work") 
    }, function() { 
     //this function gets executed 
     alert("works") 
    }); 
}); 

爲什麼首先不能工作,是不是應該這樣工作?我的選擇是什麼?使用jQuery在()上執行功能的順序是什麼?

+1

你究竟想要做什麼?我猜你的第三個參數(第一個函數)作爲數據傳入處理程序。 http://api.jquery.com/on/#on-events-selector-data-handlereObjectObject [FIDDLE](http://jsfiddle.net/Kjyac/) –

+0

文檔清楚說明了這應該如何工作。 – Mathletics

回答

1

on()不具有多個處理程序一樣hover()一樣。第三個參數是將數據傳遞給處理程序。如果你想使用data參數作爲處理程序的回調函數,我想這是一個選項。這將調用你的兩個功能:http://jsfiddle.net/M4x4u/1/

$(function() { 
    $(".items").on('click', 'a', function() { 
     //nothing gets executed here, alert wont come 
     alert("doesn't work") 
    }, function (e) { 
     //this function gets executed 
     alert("works") 
     e.data(); 
    }); 
}); 
+0

你幾乎回答了問題,但爲什麼第二個函數首先被執行。 – Mike

+0

第二個函數是處理程序,第一個函數是傳遞到處理程序的數據。在上面的例子中,我將數據(第三個參數)傳遞給處理程序(第四個參數),然後在其中調用它。 – smerny

+0

但這隻適用於第一次迭代 – Mike

2

你的第二個函數成爲事件處理程序。你的第一個功能是作爲數據傳遞。

0

看起來你很困惑ontoggle

$(function() { 
    $(".items").on('click', 'a', function() { 
    alert("this works now") 
    }); 
});