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'));
}