【发布时间】:2013-04-26 00:39:45
【问题描述】:
我有这个功能,我不确定是不是最好的。它实际上正在工作。我问是因为我在网上找不到任何“复制粘贴”解决方案,所以我写了这个。没有必要建议其他 CSS 解决方案,我被 <a href><img>text</a> 结构困住了,我无法编写 .css(这一切都是因为后端编码限制/'他们不知所措:lol ')
javascript(一种让客户建立自己的图标集的简单方法[卡在 .png]):
$(".list-habiliy").on({
mouseenter: function(){
$('img.icone', this).attr("src",$('img.icone', this).attr("src").replace('.png', '-o.png'));
},
mouseleave: function(){
$('img.icone', this).attr("src",$('img.icone', this).attr("src").replace('-o.png', '.png'));
}
},"a");
html(<a> 的列表最多可以包含 30 个元素):
<div class="list-habiliy">
<a href="some-link1.link"><img class="icone" src="/path/to/default/icons/icon-24px-icon-name1.png" alt="" width="24" height="24" />Some text1</a>
<a href="some-link2.link"><img class="icone" src="/path/to/default/icons/icon-24px-icon-name2.png" alt="" width="24" height="24" />Some tex2t</a>
<a href="some-link3.link"><img class="icone" src="/path/to/default/icons/icon-24px-icon-name3.png" alt="" width="24" height="24" />Some text3</a>
<a href="some-link4.link"><img class="icone" src="/path/to/default/icons/icon-24px-icon-name4.png" alt="" width="24" height="24" />Some text4</a>
</div>
该函数的目标是通过添加/删除图像源中的 '-o' 文本来替换 <a> 中的图标 <img>。我想知道,出于性能原因,我应该使用 .each()、hover() 吗?
jsFiddle:
这是最好的方法吗?
感谢您的所有建议。
[最后]:
由用户 @Xotic750 解释 [已接受答案](我们使用 event 属性并使用 javascript 直接访问元素,而不是在 jquery 中包装它,我们也不会执行任何进一步的 jquery 搜索..)
不知何故,这是我能做的唯一优化。
感谢用户@codelio [我不能接受 2 个答案] 缩短了代码编写:
$(".list-habiliy a").on({
mouseenter: function (e) {
var elm=e.delegateTarget.firstChild;
elm.src=elm.src.replace('.png','-o.png');
},
mouseleave: function (e) {
var elm=e.delegateTarget.firstChild;
elm.src=elm.src.replace('-o.png','.png');
}
});
【问题讨论】:
-
查看 jQuery hover,我认为它更优雅。
-
@rontornambe
jQuery.hover()只是上面代码的简写。 -
因为在 6 个答案和将近 2 周之后,您可能已经发现其中一个有用,甚至是答案。也许你找到了另一种你现在认为最好的方法。如果您找到了另一种方法,那么最好发布您的答案,嘿,您甚至可以接受自己的答案。否则,这个问题开始看起来像“不是一个真正的问题”。我只是想给你一些反馈,关于 SO 的问题太多了,然后 OP 就再也没有回过头来。 about 中的一些第一行:“Stack Overflow 是一个问答网站”,“这个网站就是为了获得答案。”
-
谢谢@Xotic750,我明白了。 :)
标签: javascript jquery performance optimization