Разбор ужасно устаревшего HTML с помощью jQuery

0

У меня возникли проблемы с пониманием того, как использовать вложенные селектора в 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!");
            }
        });

Я никогда не получаю предупреждение, когда я запускаю это. Я почти уверен в своем синтаксисе, это было давно, так как я делал какие-то кодировки, поэтому я мог бы совершить какую-то глупую ошибку.

  • 0
    Они даже не закрывают <font> : O В любом случае, вы можете определить «открытый»?
  • 0
    @buzzsawddog Я, к счастью, не изучаю IT. Я программист-хобби-самоучка, что, вероятно, заметно по моему ужасному коду.
Показать ещё 5 комментариев
Теги:

1 ответ

4
Лучший ответ

Вы можете использовать .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;
  • 1
    Отлично, это заставило меня снова двигаться. Большое спасибо за помощь!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню