我尝试完成悬停不同图像的元素列表。
像这样的东西
<ul id="test">
<li id="sidebarList_1">Image 1</li>
<li id="sidebarList_2">Image 2</li>
<li id="sidebarList_3">Image 3</li>
<ul>
<div id="imgDiv_1">
<img src="http://www.freemacware.com/wp-content/images/smultron1.png" />
</div>
<div id="imgDiv_2">
<img src="http://www.freemacware.com/wp-content/images/smultron2.png" />
</div>
<div id="imgDiv_3">
<img src="http://www.freemacware.com/wp-content/images/smultron3.png" />
</div>
我的jQuery看起来像这样
$(this).mouseover(function() {
$("#imgDiv_1").css('visibility','visible');
}),
$(this).mouseout(function() {
$("#imgDiv_1").css('visibility','hidden');
});
如图所示,它现在是静态的。我试过这样的东西来获取li中的id元素的数量(ex sidebarList_ 1 ):
$(this).mouseover(function() {
var myString = $(this).val().split("_").pop();
$("#imgDiv_" + myString).css('visibility','visible');
}),
$(this).mouseout(function() {
var myString = $(this).val().split("_").pop();
$("#imgDiv_" + myString).css('visibility','hidden');
});
但这不起作用。我怎样才能完成我想要做的事情?
答案 0 :(得分:3)
我会在data-*
个元素中添加li
属性,其值与相关的div
相对应:
<ul id="test">
<li id="sidebarList_1" data-img="imgDiv_1">Image 1</li>
<li id="sidebarList_2" data-img="imgDiv_2">Image 2</li>
<li id="sidebarList_3" data-img="imgDiv_3">Image 3</li>
<ul>
然后使用以下jQuery:
$("#test").on("mouseover mouseout", "li", function () {
$("#" + $(this).data("img")).toggle();
});
这使用on
方法,选择器作为第二个参数,以获取事件委托的优势(每个li
元素只有一个事件处理程序而不是一个)。它假定默认情况下会隐藏div
元素,因此在鼠标悬停时,toggle
调用会使悬停的div
可见。
有用的参考资料
答案 1 :(得分:0)
尝试使用此
$("#test li").mouseover(function() {
var myString = $(this).attr("id").replace("sidebarList_","");
$("#imgDiv_" + myString).css('visibility','visible');
});
$("#test li").mouseout(function() {
var myString = $(this).attr("id").replace("sidebarList_","");
$("#imgDiv_" + myString).css('visibility','hidden');
});
答案 2 :(得分:0)
您应该了解如何使用$(this)
或this
。你使用它的方式,它实际上没有提到任何东西。当您想要使用this
时,就像这样
$('div').click(function(){
$(this) //<--- refers to the div that was clicked
});
您可以使用
$('div').hover(
function(){ //<-- Mouse in
}
);function(){ //<-- Mouse out
};
答案 3 :(得分:0)
通过制作悬停项链接,让它在语义上更好,键盘更方便,更轻松自己:
<ul id="test">
<li id="sidebarList_1"><a href="#imgDiv_1">Image 1</a></li>
<li id="sidebarList_2"><a href="#imgDiv_2">Image 2</a></li>
<li id="sidebarList_3"><a href="#imgDiv_3">Image 3</a></li>
<ul>
和Jquery:
$('#test li a').bind('mouseenter focusin',function() {
$($(this).attr('href')).show();
}).bind('mouseleave focusout',function() {
$($(this).attr('href')).hide();
});
这意味着您不得不使用字符串操作,如果用户在浏览器上关闭了JS,则相关项目仍然是语义链接。