我在列表中有几个项目,并希望通过应用一些css样式(可能是背景颜色等)突出显示用户点击的项目。
我的HTML看起来像这样:
<ul class="thumbnails">
<li>
<a href="#" class="thumbnail">
<img class="giftthumb" src='thumb1.jpg' alt="">
<span class="gifttitle">Thumb1</span>
</a>
</li>
<li>
<a href="#" class="thumbnail">
<img class="giftthumb" src='thumb2.jpg' alt="">
<span class="gifttitle">Thumb3</span>
</a>
</li>
<li>
<a href="#" class="thumbnail">
<img class="giftthumb" src='thumb3.jpg' alt="">
<span class="gifttitle">Thumb3</span>
</a>
</li>
</ul>
jQUery检索所选项目:
$('.thumbnail').click(function(e) {
e.preventDefault();
???
})
答案 0 :(得分:15)
您可以使用jQuery的class management methods(在本例中为addClass()
和removeClass()
)在所选项目上添加一个类,并从所有其他项目中删除相同的类(如果您只希望一次选择一个。)
//save class name so it can be reused easily
//if I want to change it, I have to change it one place
var classHighlight = 'highlight';
//.click() will return the result of $('.thumbnail')
//I save it for future reference so I don't have to query the DOM again
var $thumbs = $('.thumbnail').click(function(e) {
e.preventDefault();
//run removeClass on every element
//if the elements are not static, you might want to rerun $('.thumbnail')
//instead of the saved $thumbs
$thumbs.removeClass(classHighlight);
//add the class to the currently clicked element (this)
$(this).addClass(classHighlight);
});
然后在你的CSS中添加:
.highlight {
background-color: cyan;
font-weight: bold;
}
这比直接从jQuery / Javascript更改CSS属性(例如使用.css()
方法)更好的解决方案,因为关注点的分离将使您的代码更易于管理和阅读。
答案 1 :(得分:2)
$('.thumbnail').click(function(e) {
e.preventDefault();
$(this).css('background-color', 'red');
})
答案 2 :(得分:1)
$('.thumbnail').removeClass('selected');
$(this).addClass('selected');
然后你所要做的就是定义你所选择的&#39; css课。
答案 3 :(得分:1)
如果您不需要 有效 持续,那么这就是CSS方式:
li:focus{
background: red;
}
li:active{
background: gold;
}
&#13;
<ul>
<li tabindex="1">Item 1</li>
<li tabindex="1">Item 2</li>
<li tabindex="1">Item 3</li>
</ul>
Now click <b>here</b> and see why it's not persistent.
&#13;
在某些情况下,上述内容可能很有用 - 仅突出显示当前&#34;点击 - 活动&#34;项...