好的,首先,正如我在评论中指出的那样,你的 Array 没有被填充,因此你的if
陈述是错误的。除此之外,虽然类命名系统还不错(尽管我认为破折号在类名中比小驼峰式大写更标准),但您的 jQuery 中存在一些严重的冲突。
你的 CSS 很好,而且 HTML 结构并不可怕。我也可以改变,但我会从 Javascript 开始,正如我想象的那样,你可能已经放了很多 HTML,可能还有 CSS。js是一个简单易行的改变。以下是“我”如果交给我可能会如何重写它。我相信它可以达到您想要的效果,而无需冗长的 if 语句。我还使用jQuery 的 .data()方法记录“原始文本”,尽管目前我认为它没有用。
$(function() {
// saves "original text" to LI element's data
$('.skillsDouble li').each(function(i) { $(this).data("oText", $.trim($(this).text())); });
// begins "delegating" events to selected elements, in this case, 'mouseenter' to all LI's of .skillsDouble
$(document).on("mouseenter", '.skillsDouble li', function(e) {
// just to make things easy, I grab the stuff we want to work with and make it local variables
var txt = $(this).find('.text'), // our text element
rate = $(this).find('[class*=Star]'), // our ratings element based on any inner element having a class name "containing the phrase 'Star'"
oText = $(this).data("oText"); // our original text, if you still want it for something else
txt.stop().hide(); // hide the text
rate.stop().animate({ // show the stars
left: 400,
opacity: "show"
});
})
.on("mouseleave", '.skillsDouble li', function(e) { // now delegate mouseleave
// same localvariables
var txt = $(this).find('.text'), rate = $(this).find('[class*=Star]'), oText = $(this).data("oText");
rate.stop().hide(); // hide the stars
txt.stop().fadeIn(1000); // show the text
})
})
Alt 示例
- 还展示了“淡入淡出”效果的一些替代用途