У меня возникли проблемы с пониманием того, как использовать вложенные селектора в jQuery. Я разбираю список классов из своего университета, и я хочу, чтобы он сообщил мне, если класс, который я хочу, открыт. Тем не менее, веб-сайт не использует css AT ALL, поэтому единственный способ идентифицировать класс, который я хочу, - это прочитать атрибут цвета тега шрифта.
Здесь блок HTML, который я пытаюсь прочитать
<TD><FONT FACE='Arial' SIZE='-1' COLOR='Black'>nameOfClass</TD>
Здесь, как я пытаюсь его прочитать, и отображать предупреждение, если цвет атрибута тега шрифта nameOfClass является "черным", что означает его открытие. Это неприятно, но это единственный способ узнать, доступен ли класс или нет.
function main() {
$(document).ready(function(){
if $("td").text()=="nameOfClass"
if $(this "font").attr("COLOR")=="Black" {
alert("It actually works!");
}
});
Я никогда не получаю предупреждение, когда я запускаю это. Я почти уверен в своем синтаксисе, это было давно, так как я делал какие-то кодировки, поэтому я мог бы совершить какую-то глупую ошибку.
Вы можете использовать .children
. Но для того, чтобы ваш код работал, вы должны перебирать все элементы td
, а не просто сравнивать текстовое значение первого:
$("td").each(function() {
if($(this).text() === 'nameOfClass' &&
$(this).children('font').attr('color') === 'Black') {
alert("It actually works!");
}
});
В противном случае $("td").text()=="nameOfClass"
проверяет, является ли текст первого элемента td
на странице "nameOfClass", который, конечно же, не тот, который вы хотите. Вы хотите найти все td
элементы, которые содержат эту строку.
Вы могли бы сделать это намного проще, если бы вы сразу выбирали все элементы font
, у атрибута color
которого есть значение "Черный", с селектором атрибутов. Затем вы отфильтровываете те, которые не содержат имя класса, и подсчитывают, сколько элементов осталось. Если нет, класс не открыт.
var classIsOpen = $('font[color="Black"]').filter(function() {
return $(this).text() === 'nameOfClass';
}).length > 0;
Вам нужно всего лишь выполнить точное сопоставление имени класса, если это может произойти как часть другого имени, например "Веб" и "Расширенный Интернет". Если это не так, вы можете сделать код еще короче, с :contains
селектор:
var classIsOpen = $('font[color="Black"]:contains("nameOfClass")').length > 0;
<font>
: O В любом случае, вы можете определить «открытый»?