Pau*_*aul 7 javascript jquery dom-manipulation
我在列表中有几个项目,并希望通过应用一些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>
Run Code Online (Sandbox Code Playgroud)
jQUery检索所选项目:
$('.thumbnail').click(function(e) {
e.preventDefault();
???
})
Run Code Online (Sandbox Code Playgroud)
kap*_*apa 15
你可以使用jQuery的班级管理方法(即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);
});
Run Code Online (Sandbox Code Playgroud)
然后在你的CSS中添加:
.highlight {
background-color: cyan;
font-weight: bold;
}
Run Code Online (Sandbox Code Playgroud)
这是一个比直接从jQuery/Javascript(.css()
例如方法)更改CSS属性更好的解决方案,因为关注点的分离将使您的代码更易于管理和读取.
归档时间: |
|
查看次数: |
29146 次 |
最近记录: |