我有以下HTML:
<div id="bullets">
<ul id="intrebari">
<li> <img src="images/bullet.png" class="li-icon"> <a href="#"> Frequently Asked Questions </ a> </ li>
<li> <img src="images/bullet.png" class="li-icon"> <a href="#"> custumer Support </ a> </ li>
<li> <img src="images/bullet.png" class="li-icon"> <a href="#"> custumer Login </ a> </ li>
</ ul>
</ div>
使用Jquery我希望在鼠标悬停时更改每个人<li>
的图像。
到目前为止我管理这个:
$(document).ready(function() {
$('#intrebari>li a').mouseover(function() {
$(this).css('color: red')
$('li > img').attr('src', 'images/bulletactive.png');
});
});
但这样做会改变所有<li>
我知道它可以是沙丘
有人可以提供帮助
答案 0 :(得分:1)
您的$('li > img')
会返回li
和.attr()
的所有子图片,并将其应用于所有选定的图片。有多种方法可以做到。
由于你的img就在你的锚之前,你可以使用.prev()
试试这个
$(document).ready(function() {
$('#intrebari>li a').mouseover(function() {
$(this).css('color: red')
$(this).prev().attr('src', 'images/bulletactive.png');
});
});
如果要在img和anchor之间插入任何元素,它将无效。替代解决方案是
$(this).closest("li").children("img").attr('src', 'images/bulletactive.png');
尝试关闭img标记,例如<img src="images/bullet.png" class="li-icon"/>
答案 1 :(得分:1)
你能试试吗
<强> HTML 强>
<div id="bullets">
<ul id="intrebari">
<li> <img src="http://placehold.it/20/20" class="li-icon" /> <a href="#"> Frequently Asked Questions </a> </li>
<li> <img src="http://placehold.it/20/20" class="li-icon" /> <a href="#"> custumer Support </a> </li>
<li> <img src="http://placehold.it/20/20" class="li-icon" /> <a href="#"> custumer Login </a> </li>
</ul>
</div>
<强> JQUERY 强>
$('#intrebari>li a').mouseover(function() {
$(this)
.parents('#intrebari')
.find('a').css('color','black')
.prev().attr('src','http://placehold.it/20/20')
.end().end().end()
.css('color','red').prev().attr('src','http://placehold.it/30/30');
});
答案 2 :(得分:0)
试试这个。我在我的代码中应用了这个并且工作正常。
$('li').mouseover(function(){
var $this = $(this);
// img over
$img = $this.find('img').attr('src');
bg = $img.replace(/^url\(['"]?/,'').replace(/['"]?\)$/,'').replace(/^.*\/|\.[^.]*$/g, '');
$url ="pathToYourImage\bullet.png";
$this.find('img').attr('src', '');
$this.find('img').attr('src','"+$url+"');
});
希望它有效。
答案 3 :(得分:0)
由于选择器$('li&gt; img'),它正在更改所有列表项上的图像。你必须像这样使用它:$(this).parent()。find('img')。attr('src','images / bulletactive.png');
正如一个建议,使用CSS更容易和更快。
答案 4 :(得分:0)
添加了jquery鼠标离开事件
$('#intrebari>li a').mouseover(function() { console.log('over')
$(this).css('color','red')
$(this).prev().attr('src', 'https://cdn4.iconfinder.com/data/icons/ionicons/512/icon-ios7-arrow-left-128.png');
});
$('#intrebari>li a').mouseleave(function() { console.log('out')
$(this).css('color', 'blue')
$(this).prev().attr('src','https://cdn4.iconfinder.com/data/icons/ionicons/512/icon-ios7-arrow-right-128.png');
});