2011-09-30 71 views
6

可否使用數據()函數到DOM元素(或一個jQuery元件)存儲到另一元件? (見下面的代碼)在jQuery中,我可以使用.data()將元素存儲到另一個元素上以便快速檢索嗎?

它按價值或參考存儲它嗎?這是不錯的做法嗎?

我希望能夠快速,輕鬆地找到從屬元件(見下面的代碼)的主元素,像這樣:

$slave = $('.some .path .to .slave'); 
$master = $('.some .path .to .master');  
$master.data('slave', $slave);  
$master.click(function(){ $(this).data('slave').toggle() }); 

(明顯的代碼是愚蠢的,但實際上我。通過大量的主機和從機元素的循環)

回答

3

您可以存儲任何你想要的,你是否應該。

JS變量是對對象的引用,不是嗎? (這只是部分修辭–還有什麼將一個DOM查詢返回除了參考?深拷貝?)

+0

我猜既不是DOM的引用也不是深層副本,而是一個jQuery對象,它有一堆東西,也許有一些對DOM對象的引用。 – david

+0

(如果不是引用,什麼是引用jQuery對象的變量?) –

+0

是的,但保持對對象的引用會使整個jquery對象保持在範圍內嗎?這不僅僅是一個dom節點的參考,我猜可能已經存在。 – david

0

我知道你可以這樣做:

var slavePath=$('.some .path .to .slave'); 
var master=$('.some .path .to .master').data('slave', slavePath); 
master.click(function(){ $($this.data('slave')).toggle()}); 

選擇剛剛保存的奴隸,而不是整個對象。

+0

你可能在你的代碼有錯誤,slavePath包含在你的案件的元素列表。 – Weboide

相關問題