Jquery: получить текст из текстового узла

0

У меня есть куча этих divs, и я хочу, чтобы они исчезли, если цена продажи составляет $ 0.00

<div class="ProductPriceRating">
    <em>
         <strike class="RetailPriceValue">$79.99</strike> 
         $0.00
    </em>
    <span class="Rating Rating0">
        <img src="..." alt="" style="display: none" />
    </span>
</div>

Поэтому я написал этот jquery

$(function(){
    $(".ProductPriceRating em").contents().filter(function() {
        return this.nodeType != 1; 
    }).wrap("<span></span>");
    console.log($(".ProductPriceRating em span").text());
    if($(".ProductPriceRating span").text() == ' $0.00'){
            console.log('success');
        $('div.ProductPriceRating').hide();
        $('div.ProductActionAdd').hide();
    }
});

Я обернул тег span вокруг текстового узла, чтобы упростить доступ. Затем я консоль регистрирую его и получаю "$ 0.00 $ 0.00 $ 0.00" (один "$ 0.00" для каждого из элементов на странице). Но успеха нет.

Я просто не знаю, где я ошибаюсь

  • 2
    То есть вы больше не пытаетесь получить текст из текстового узла, вы завернули его в промежуток времени с того момента, как написали заголовок вопроса, и теперь вы пытаетесь сделать что-то совершенно другое?
Теги:

2 ответа

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

Вам необходимо выполнить цикл через каждый родительский элемент:

Из:

if($(".ProductPriceRating span").text() == ' $0.00'){
        console.log('success');
    $('div.ProductPriceRating').hide();
    $('div.ProductActionAdd').hide();
}

Для того, чтобы:

$(".ProductPriceRating").each(function() { 
    if($(this).find('span').text() == ' $0.00'){
            console.log('success');
        $(this).hide();
        $('div.ProductActionAdd').hide();
    }
});
0

В вашем заявлении if у вас есть

$(".ProductPriceRating span").text()

В вашем console.log у вас есть

$(".ProductPriceRating em span").text()

Это может быть проблемой, потому что также существует диапазон с классом "Рейтинг",

Ещё вопросы

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