$(function(){
$(".nav ul li").each(function(e){
$(this).mouseover(function(){
$(".subnav .left div:not(:eq("+e+"))").hide();
$(".subnav .left div").eq(e).show();
})
})
})
上面代码中的div:not(:eq("+e+"))")
是什么意思?我不知道为什么它在括号中使用两个+
?我可以使用div:not(:eq(e))")
而不是它吗?谢谢。
答案 0 :(得分:1)
在JavaScript中,+
用于将两个内容组合在一起。
在这种情况下,它正在添加字符串。
此:
".subnav .left div:not(:eq("+e+"))"
意味着添加三个字符串成为一个:
.subnav .left div:not(:eq(
e
))
最终结果是添加到jQuery选择器的e
的值,e
是当前迭代元素的索引。
整个事情的结果用简单的话来说就是:当鼠标悬停在特定列表项上时,隐藏<div>
下的所有.subnav .left
个元素,但{h}列表中的<div>
除外项目
修改:您可以通过使用此类代码来避免代码混乱并转储+
:
$(".subnav .left div").not(function(index) {
return (index === e);
}).hide();
更多行,但在显示函数内部的逻辑时也更优雅,而不是字符串。
答案 1 :(得分:0)
我不能真正站在凌乱的代码中,所以这里有一个替代方案(应该)做同样的事情:
$(function(){
$('.nav ul li').mouseover(function(){
$('.subnav .left div').eq($(this).index()).show().siblings().hide();
});
});