我对几个块的jquery效果有问题。 Mouseenter和mouseleave仅在第一个div块上工作,而在其他所有块上则不起作用。
这是JS:
$(document).ready(function() { $('#mainbox').mouseenter( function () { $('#infobox').fadeIn(); }); $('#mainbox').mouseleave( function () { $('#infobox').fadeOut(); }); });
还阻止:
<div id="mainbox"><div id="infobox" style="display: none;">first block - it works on this one</div></div>
<div id="mainbox"><div id="infobox" style="display: none;">2nd block - it doesn't work/div></div>
<div id="mainbox"><div id="infobox" style="display: none;">3rd block - it doesn't work</div></div>
你们有什么想法是什么问题吗?
答案 0 :(得分:2)
问题是:该选择器仅定位文档中第一个主框内的第一个信息框。
在API中,您可以阅读:
每个id值只能在文档中使用一次。如果超过 一个元素已分配相同的ID,使用该ID的查询 只会选择DOM中第一个匹配的元素。这种行为 但是,不应该依赖;包含多个文档的文档 使用相同ID的元素无效。
这就是你的代码无效的原因。
提示: 将id切换到类并绑定鼠标事件以在div内搜索,如:
$('.mainbox').mouseenter(
function () {
$(this).find('.infobox').fadeIn();
});
$('.mainbox').mouseleave(
function () {
$(this).find('.infobox').fadeOut();
});
答案 1 :(得分:0)
将id更改为class:
<div class="mainbox"><div class="infobox" style="display: none;">first block - it works on this one</div></div>
<div class="mainbox"><div class="infobox" style="display: none;">2nd block - it doesn't work/div></div>
<div class="mainbox"><div class="infobox" style="display: none;">3rd block - it doesn't work</div></div>
然后在JS:
$(document).ready(function() {
$('.mainbox').mouseenter(
function () {
$(this).find('.infobox').fadeIn();
});
$('.mainbox').mouseleave(
function () {
$(this).find('.infobox').fadeOut();
});
});