测试display = none

时间:2010-06-04 14:34:43

标签: jquery

这不起作用,不是吗?或者如果另一条线可以做同样的事情,你可以停止错误:

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" });
}

我需要过滤表格中的行并为某些单词着色。如果选择了很多单词,数据已经成为着色的方法。因此,我将尝试通过仅通过无隐藏元素来限制着色。

6 个答案:

答案 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
}