Проверить, существует ли тег / класс несколькими тегами вниз?

0

У меня есть этот макет, и я хочу проверить innerHTML класса.pricecolor во время циклического перехода через каждый класс.productnamcolor:

<tr>
    <td valign="top" width="33%">
        <div>
            **<a href="http://www.site.com/Prodcut1.htm" class="productnamecolor colors_productname" title="Product 1">**
            <span itemprop='name'>
            Product 1 </span>
            </a>
            <br/>
            <div>
                <div>
                    **<b><font class="pricecolor colors_productprice"><span class="PageText_L483n">$16.00</span></font></b>**
                </div>
                <img src="Shipping_Small.gif">
            </div>
        </td>
    </td>
    <td valign="top" width="33%">
        <div>
            <a href="http://www.site.com/Product2.htm" class="productnamecolor colors_productname" title="Product 2">
            <span itemprop='name'>
            Product 2 </span>
            </a>
            <br/>
            <div>
                <div>
                    <b><font class="pricecolor colors_productprice"><span class="PageText_L483n">$9.00</span></font></b>
                </div>
                <img src="Shipping_Small.gif">
            </div>
        </td>
    </td>
    <td valign="top" width="33%">
        <div>
            <a href="http://www.site.com/Product3.htm" class="productnamecolor colors_productname" title="Product 3">
            <span itemprop='name'>
            Product 3 </span>
            </a>
            <br/>
            <div>
                <div>
                    <b><font class="pricecolor colors_productprice"><span class="PageText_L483n">$8.00</span></font></b>
                </div>
                <img src="Shipping_Small.gif">
            </div>
        </td>
    </td>
</tr>

Здесь есть 3 повторения, и я поставил звездочки вокруг двух соответствующих строк первого. Эти звездочки не находятся в реальном коде.

Здесь jQuery, который я пробовал:

$(document).ready(function() {
     $('.productnamecolor').each(function() {
          var test = $('.pricecolor').innerHTML;
          console.log(test);
     });
});

Я также пробовал:

$(document).ready(function() {
     $('.productnamecolor').each(function() {
          var test = $(this).closest('b').innerHTML;
          console.log(test);
     });
});

Оба они всегда говорят, что консоль не определена.

То, что мне действительно нужно, иногда в одном из этих блоков HTML-продуктов, <span class="PageText_L483n">$8.00</span> полностью отсутствует в <b><font class="pricecolor colors_productprice"> </font></b>. Это то, что мне нужно проверить с помощью jQuery.

Теги:

1 ответ

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

Ваш выбор неверен, вы должны искать pricecolor соответствующего productnamecolor секции.

пытаться

 $('.productnamecolor').each(function() {
      var test = $(this).closest('div').find('.pricecolor').html();
      console.log(test);
 });

Смущенный чтение вашего последнего заявления, если вы хотите найти все.productnamecolor, который не имеет span с именем класса, которое вы можете сделать:

$('.pricecolor:not(:has(".PageText_L483n"))')
                 .closest('td')
                 .find('.productnamecolor');

демонстрация

  • 0
    Ваш первый фрагмент кода решает мою проблему. Вопрос, однако, почему мой второй код jQuery var test = $(this).closest('b').innerHTML; работай? Разве это не делает то же самое, что ваш, который находит ближайший экземпляр этого конкретного тега?
  • 0
    @ user1925805 ближайший тестирует себя до дерева DOM, то есть его родителей или самого себя, но b там, где его нет.
Показать ещё 1 комментарий

Ещё вопросы

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