2011-03-23 34 views
7

我可以一個click事件添加到HTML元素和具有click事件更新$(document).data(key,value)jQuery的數據()和「changeData」事件

這然後觸發$(document).bind('changeData', function() {...}))。知道這一點,找出哪個HTML元素更新$(document).data()的最佳方法是什麼?

如:

$(document).bind('changeData', function { 
    // get the anchor that set $(document).data() 
}); 

$('a').click(function() { 
    $(document).data('key', 'value'); 
}); 
+1

我建議羅伯特·羅斯的第二個答案,但看到下面我的筆記。另外請注意,這個功能沒有記錄,所以應該被認爲是實驗_AND_可能在不久的將來被刪除。 [請注意這裏的bug報告](http://bugs.jquery.com/ticket/7877) – Scoobler 2011-03-23 19:27:53

+0

注意到了,謝謝你的支持! – CoryDorning 2011-03-23 19:50:31

+0

事實上,'changeData'事件現在已被棄用,如@ TankorSmash的答案所示。 – Antti29 2016-12-14 14:10:11

回答

3

那麼通過點擊事件的數據:

$('#elementSelector').click(function(e){ 
    $(document).data(key, val); 
}); 

$(document).bind('changeData', function(e){ 
    // e.target? 
}); 

如果沒有,嘗試存儲設備存儲的數據內的目標:

$('#elementSelector').click(function(e){ 
    $(document).data(key, { 
     val: 'value', 
     target: e.target 
    }); 
}); 

然後,當你有變化事件:

因爲1.
+0

我試過第一個選項,但e.target返回'文檔'。 但是,我喜歡第二個選項的想法。這可能有用! – CoryDorning 2011-03-23 19:23:16

+0

你可以用'$(文件).bind( 'changeData',函數(即鍵,值).....''key'是設置,'value'是所設定的值的關鍵。 – Scoobler 2011-03-23 19:25:22

+0

@Scoobler這是有趣的,但作品...但是,e仍然指'文檔' – CoryDorning 2011-03-23 19:33:08

2

https://bugs.jquery.com/ticket/11718

jQuery的setDatachangeData事件已被棄用,在1.9中刪除。這意味着在2.X和3.X中,你不再能夠綁定到這些事件。

+0

這個問題被問之前的jQuery 1.6發佈...... – miken32 2016-08-18 23:02:01

+0

肯定的,但我只花了時間,試圖弄清楚爲什麼它不工作。谷歌搜索「jquery changeData」沒有提及它被刪除,也沒有提供「jQuery.data()」文檔和事件文檔。也許值得重新考慮這個問題,因爲它與我們其他人的版本不一樣。 – TankorSmash 2016-08-18 23:33:37