在每個jQuery事件中,jQuery提供的currentTarget
與this
相同,但據我瞭解currentTarget
的屬性取決於您的瀏覽器。jQuery事件currentTarget數據集
在chrome中,我可以得到event.currentTarget.dataset
,它給了我啓動事件的元素的數據,但我不認爲這適用於所有瀏覽器。我所知道的唯一的跨瀏覽器解決方案是通過將currentTarget包裝到另一個像下面的jQuery對象中來獲取數據。
var div = jQuery("<div/>").data("numbers", [1,2,3]);
div.click(function(e) {
var data = jQuery(e.currentTarget).data();
console.log(data.numbers);
});
有誰知道一個跨瀏覽器的解決方案來獲取數據,而無需創建與this/currentTarget
一個新的jQuery對象?
更新:只是要清楚,我之所以問:
我們正在轉換是再次觸發事件轉換爲一個jQuery對象元素,發送它通過jQuery的第二次(已經是一個jQuery對象來創建事件)。我希望能夠將已經創建的jQuery對象帶入事件中。幻燈片44 & 45上this presentation解釋我的思維過程。
你可以用event.currentTarget.dataset
來做到這一點,但我不認爲它是一個跨瀏覽器的解決方案。在上面的代碼中,您可以使用緩存的jQuery對象div
來獲取數據而不重新創建jQuery對象。這適用於特定的例子,但你會用像下面的delegate
事件動態事件做:
jQuery("#container").on('click', '.pop-data', function(e) {
var data = jQuery(e.currentTarget).data();
alert(data);
});
上面的代碼工作,而不是一個壞的解決方案,但沒有人知道的方式來獲取數據,而不創建一個新的jQuery對象?
爲什麼你想要一個不同的解決方案? – 2014-09-02 06:42:18
jquery被寫入使用的方式有什麼問題? – 2014-09-02 06:45:33
@arun表演。它的一個插件。 – Dol 2014-09-02 06:47:41