Проверить, если 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" });
}
Мне нужно фильтровать строки в таблице и цветное слово. Эти данные стали способом для раскраски, если выбрано много слов. Поэтому я постараюсь ограничить раскраску, пройдя только через скрытые элементы.
Ответы
Ответ 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; }