Подтвердить что ты не робот

Проверить, если display = none

Это не работает, не так ли? Или вы можете остановить ошибку, если другая строка может сделать то же самое:

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

Мне нужно фильтровать строки в таблице и цветное слово. Эти данные стали способом для раскраски, если выбрано много слов. Поэтому я постараюсь ограничить раскраску, пройдя только через скрытые элементы.

4b9b3361

Ответ 1

Если вы хотите получить видимые элементы tbody, вы можете сделать это:

$('tbody:visible').highlight(myArray[i]);

Он похож на ответ, который дал Агент_9191, но этот удаляет пробел из селектора, что делает его выбираемым видимым tbody элементами вместо видимых потомков.


EDIT:

Если вы специально хотели использовать тест в свойстве display CSS элементов tbody, вы могли бы сделать это:

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

Ответ 2

Используйте это:

if( $('#foo').is(':visible') ) {
    // it visible, do something
}
else {
    // it not visible so do something else
}

Надеюсь, что это поможет!

Ответ 3

Попробуйте вместо этого выбрать только видимые элементы под tbody:

$('tbody :visible').highlight(myArray[i]);

Ответ 4

$('tbody').find('tr:visible').hightlight(myArray[i]);

Ответ 5

Как указано в @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; }