测试display = none

Til*_*eck 32 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" });
}
Run Code Online (Sandbox Code Playgroud)

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

use*_*716 44

如果你想获得可见tbody元素,你可以这样做:

$('tbody:visible').highlight(myArray[i]);
Run Code Online (Sandbox Code Playgroud)

它看起来类似于Agent_9191给出的答案,但是这个从选择器中移除了空格,这使得它选择可见tbody元素而不是可见后代.


编辑:

如果您特别想displaytbody元素的CSS属性上使用测试,则可以执行以下操作:

$('tbody').filter(function() {
     return $(this).css('display') != 'none';
}).highlight(myArray[i]);
Run Code Online (Sandbox Code Playgroud)

  • @Tillebeck - 您理解,选择器中的"空间"是一个重要的操作员.它表示您正在寻找后代.因此`tbody:visible`查找`tbody`元素是`visible`,而`tbody:visible`查找`tbody`的*后代*是`:visible`.祝你好运!:) (4认同)

Zuu*_*uul 43

使用这样:

if( $('#foo').is(':visible') ) {
    // it's visible, do something
}
else {
    // it's not visible so do something else
}
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!

  • 不是最佳实践,但我认为这是初学者的最佳方式. (3认同)
  • @tersakyan这里的最佳做法是什么? (3认同)

Age*_*191 5

试着这样做只选择下面的可见元素tbody:

$('tbody :visible').highlight(myArray[i]);
Run Code Online (Sandbox Code Playgroud)