请帮我解决以下问题:
<!-- this is the visible code -->
<div id="divid">{some default content}<img class="img" src="GoNextArrow.jpg" alt=""></div>
<!-- this is a hidden list of contents -->
<div style="display: none;">
<div id="divid1">{some content 1}<img class="img" src="GoNextArrow.jpg" alt=""></div>
<div id="divid2">{some content 2}<img class="img" src="GoNextArrow.jpg" alt=""></div>
<div id="divid3">{some content 3}<img class="img" src="GoNextArrow.jpg" alt=""></div>
<div id="divid4">{some content 4}<img class="img" src="GoNextArrow.jpg" alt=""></div>
<div id="divid5">{some content 5}<img class="img" src="GoNextArrow.jpg" alt=""></div>
</div>
<!-- this is an jquery script which replace the #divid with any of divid1-divid5 -->
$('#divid').hide().html(elem.html()).fadeIn();
<!-- elem is a variable, divid1 to divid5, e.g. var elem = $j('#divid'+id); -->
<!-- I need a rollover effect, I made it so: -->
$('img.img').hover(function () {
$(this).attr('src', 'GoNextArrowHover.jpg');
}, function () {
$(this).attr('src', 'GoNextArrow.jpg');
});
这对于第一个div除法效果很好,但在加载而不是除法时将它们除以1除5。
我的错误在哪里?
谢谢!
最佳答案
使用delegate()
来管理divid
容器内的事件。
$('#divid').delegate('img.img','mouseenter',function () {
$(this).attr('src', 'GoNextArrowHover.jpg');
})
.delegate('img.img','mouseleave', function () {
$(this).attr('src', 'GoNextArrow.jpg');
});
或者,如果可能的话,将
<img>
设置为<a>
元素,然后使用background-image
属性在CSS中进行操作:#divid > div > a {
background-image:url(GoNextArrow.jpg);
background-repeate:no-repeat;
}
#divid > div > a:hover {
background-image:url(GoNextArrowHover.jpg);
}
您将需要一些其他属性以使其恰到好处
关于jquery - 替换html时,jquery选择器不起作用!,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4770686/