【发布时间】:2013-01-26 20:32:40
【问题描述】:
今天我正在使用 jQuery 为共享图标制作效果。效果有点复杂,所以我尝试想一种优化性能的方法。我最终将$(this) 对象缓存到数组中。
效果演示
我上传了一个使用数组缓存对象的效果示例(悬停在图标上查看效果): http://mahersalam.co.cc/addthis/
HTML:
<div id="share-widget" class="addthis_toolbox">
<a class="addthis_button_favorites" title="أضف للمفضلة"><div>أضف للمفضلة</div></a>
<a class="addthis_button_facebook" title="شارك في فيسبوك"><div>شارك في فيسبوك</div></a>
<a class="addthis_button_twitter" title="شارك في تويتر"><div>شارك في تويتر</div></a>
<a class="addthis_button_email" title="أرسل الصفحة بالإيميل"><div>أرسل الصفحة بالإيميل</div></a>
<a class="addthis_button_compact" title="أضغط هنا لمشاهدة المزيد من خدمات المشاركة"><div>المزيد من الخدمات</div></a>
</div>
Javascript:
// Return jQuery-obj of the share links
var shareLinks = $('#share-widget').find('a').css('opacity', 0.8);
//////////////////////////////////////////
// Only jQuery way
//////////////////////////////////////////
shareLinks.hover(
function () {
$(this).clearQueue()
.siblings()
.stop(true,false).fadeTo('fast', 0.3)
.end()
.stop(true, true).fadeTo('normal', 1);
},
function () {
shareLinks.delay(100).fadeTo('normal', 0.8);
})
//////////////////////////////////////////
// jQuery + Array cache way
//////////////////////////////////////////
// Cache the array
var linksArr = [];
$.each( shareLinks, function (i) {
linksArr.push( $(this) );
linksArr[i].hover( function () {
linksArr[i].clearQueue()
.siblings()
.stop(true,false).fadeTo('fast', 0.3)
.end()
.stop(true, true).fadeTo('normal', 1);
},
function () {
shareLinks.delay(100).fadeTo('normal', 0.8);
})
});
我只是想知道数组缓存对象是否会使性能更快,还是没有必要。另外,如果有人有更好的想法来制作这种效果,我会全力以赴^^。
【问题讨论】:
-
通过stackoverflow.com/editing-help了解如何正确格式化代码和文本
标签: javascript jquery optimization