在jQuery中,我可以使用.data()将元素存储到另一个元素上以便快速检索吗?

时间:2011-09-30 01:23:20

标签: javascript jquery performance

我可以使用 data()函数将dom元素(或jQuery元素)存储到另一个元素上吗? (见下面的代码)

是按值还是按参考存储?这是好的做法吗?

我希望能够快速轻松地找到主元素的slave元素(参见下面的代码),如下所示:

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

(显然代码是愚蠢的,但我实际上是在循环很多主从元素。)

2 个答案:

答案 0 :(得分:3)

无论你是否应该存储,你都可以存储任何你想要的东西。

JS变量是对象的引用,不是吗? (这只是部分修辞 - 除了引用之外,DOM查询还会返回什么?深层复制?)

答案 1 :(得分:0)

我知道你可以这样做:

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

只需将选择器存储到从属设备,而不是整个对象。