这不起作用,不是吗?或者如果另一条线可以做同样的事情,你可以停止错误:
function doTheHighlightning(searchTerms) {
// loop through input array of search terms
myArray = searchTerms.split(" ");
for(i=0;i<myArray.length;i++)
{
// works. this line works if not out commented. Will highlight all words, also in the hidden elements
//$('tbody').highlight(myArray[i]);
// not working when trying to skip elements with display none...
$('tbody').css('display') != 'none').highlight(myArray[i]);
}
// set background to yellow for highlighted words
$(".highlight").css({ backgroundColor: "#FFFF88" });
}
我需要过滤表格中的行并为某些单词着色。如果选择了很多单词,数据已经成为着色的方法。因此,我将尝试通过仅通过无隐藏元素来限制着色。
答案 0 :(得分:44)
如果您想获得可见的tbody
元素,可以这样做:
$('tbody:visible').highlight(myArray[i]);
它看起来类似于 Agent_9191 给出的答案,但是这个从选择器中删除了空格,这使得它选择了可见的tbody
元素而不是可见的后代。
修改强>
如果您特别想在display
元素的tbody
CSS属性上使用测试,则可以执行以下操作:
$('tbody').filter(function() {
return $(this).css('display') != 'none';
}).highlight(myArray[i]);
答案 1 :(得分:43)
像这样使用:
if( $('#foo').is(':visible') ) {
// it's visible, do something
}
else {
// it's not visible so do something else
}
希望它有所帮助!
答案 2 :(得分:5)
尝试此选择仅选择tbody
下的可见元素:
$('tbody :visible').highlight(myArray[i]);
答案 3 :(得分:1)
$('tbody').find('tr:visible').hightlight(myArray[i]);
答案 4 :(得分:1)
正如@ Agent_9191和@partick所提到的,你应该使用
$('tbody :visible').highlight(myArray[i]); // works for all children of tbody that are visible
或
$('tbody:visible').highlight(myArray[i]); // works for all visible tbodys
此外,由于您似乎将一个类应用于突出显示的单词,而不是使用jquery来改变所有匹配高光的背景,只需创建一个具有所需背景颜色的css规则,并在分配后直接应用它上课。
.highlight { background-color: #FFFF88; }
答案 5 :(得分:-1)
您可以使用以下代码测试display
是否等效于none
:
if ($(element).css('display') === 'none' ){
// do the stuff
}