这个小搜索示例有效,但只是第一次。
如何清除p元素中的所有类,以便第二次搜索时,上一次搜索中的突出显示不显示?
<!DOCTYPE html>
<html>
<head>
<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript">
google.load('jquery', '1.4.2');
google.setOnLoadCallback(function() {
$('#searchButton').click(function() {
//remove all added classes so we can search again
//jQuery.each($('p'), function() {
//$('#' + this).addClass('');
//}
$('p:contains("' + $('#searchText').val() + '")').addClass('highlight');
});
});
</script>
<style>
p.highlight {
background-color: orange;
}
</style>
</head>
<body>
<input id="searchText" value="second" />
<button id="searchButton">Search</button>
<p>This is the first entry.</p>
<p>This is the second entry.</p>
<p>This is the third entry.</p>
<p>This is the fourth entry.</p>
</body>
</html>
答案 0 :(得分:2)
您可以删除所有highlight
上的p
课程,然后在匹配的元素上再次执行hightlight。
$('p').removeClass('hightlight');
答案 1 :(得分:1)
如果要删除所有类,可以在类上使用removeAttr,或将class设置为“”。所以......
$('#searchButton').bind('click',function(){
$('p').removeAttr('class');
// OR
$('p').attr('class','');
});
使用“each()”不是必需的,因为jQuery会自动对集合中的所有元素执行这些操作。
答案 2 :(得分:0)
使用removeClass()
删除该类,然后再次搜索并将该类添加到新匹配项中。我就是这样,我会使用filter()
来搜索刚刚使用<p>
而不是进行另一次$('p')
调用的$(...)
元素的选择:
$('#searchButton').click(function() {
$('p')
.removeClass('highlight')
.filter(':contains("' + $('#searchText').val() + '")')
.addClass('highlight');
});
答案 3 :(得分:0)
$('p').removeClass('highlight')
将仅删除上一次搜索中的突出显示类
$('p').removeClass()
将删除所有p的所有类