Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在变量或$(this.data)中缓存对象_Javascript_Jquery_Caching_Object - Fatal编程技术网

Javascript 在变量或$(this.data)中缓存对象

Javascript 在变量或$(this.data)中缓存对象,javascript,jquery,caching,object,Javascript,Jquery,Caching,Object,我想知道什么是更好的方法。这: var strips = $('.strip'); for (var i = 0; i < strips.length; i++) { (function() { var strip = $(strips[i]); var controls = $('.controls', strip); controls.click(function() { alert(strip.attr('id')); } })()

我想知道什么是更好的方法。这:

var strips = $('.strip');
for (var i = 0; i < strips.length; i++) {
  (function() {
    var strip = $(strips[i]);
    var controls = $('.controls', strip);
    controls.click(function() {
      alert(strip.attr('id'));
    }
  })();
}

除了个人偏好之外,真的有什么不同吗?

据我所知,您将获得相同的结果,但如果是“数据”,缓存将与DOM节点保持关联,您可以将其一起传递。不使用数据的方法对我来说似乎更干净,但我也这么认为,直到第一个选项对于更复杂的代码变得有点笨拙,所以我倾向于使用第二个选项来解决性能问题。
$('.strips .controls').click(function() {
  var me = $(this);
  if (!me.data('strip')) { me.data('strip', me.parents('.strip')) }
  alert(me.data('strip').attr('id'));
}