2016-11-18 8 views
0

Вот мой HTMLJQuery, если имя класса содержит

<div class="item">Item #SKU987</div> 

Я пытаюсь создать простой JQuery, но он держит на возвращение undefined

if (jQuery('div.item:contains("Item #SKU987")').length) { 
alert("Hello! This works!"); 
} 

Я пытаюсь это в консоли и я продолжаю получать undefined

Что мне не хватает?

+0

Выполнено ли это после этого ** элемент DOM загружен ** и ** загружен jQuery **? Есть ли ошибки в консольном журнале? Кроме того, рекомендуется использовать условия 'text()' и JS вместо селектора ': contains', если это применимо. –

+0

@YeldarKurmangaliyev да, он выполняется после элемента DOM и загружается jQuery – Haim

+0

@Haim Вы посмотрели мои 2 решения? – HenryDev

ответ

1

Вы пробовали использовать $ (документ) .ready (функция() {....}). Вот решение. Надеюсь, поможет!

$(document).ready(function(){ 
 
    if (jQuery('div.item:contains("Item #SKU987")').length) { 
 
    alert("Hello! This works!"); 
 
} 
 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 
<div class="item">Item #SKU987</div>

Вот еще одно решение:

if($(".item").text().indexOf("Item #SKU987") !== -1){ 
 
    alert("Hello! This works!"); 
 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 
<div class="item">Item #SKU987</div>

+0

'Uncaught SyntaxError: Неверный или неожиданный токен' в качестве напоминания, я пытаюсь это на консоли – Haim

+0

@Haim Я вообще не получаю никаких ошибок. Вы проверяете правильность строки «Item # SKU987» в элементе класса? – HenryDev

+0

@ Хаим говорит, в какой строке вы получаете сообщение об ошибке при использовании моего кода? – HenryDev

1

Попробуйте это:

if(jQuery('.item').eq(0).html() == "Item #SKU987") { 
    alert('it finally worked!'); 
} 

В качестве альтернативы, если у вас есть несколько .items, используйте:

jQuery.each('.item', function(i,v) { 
    if(jQuery(this).html() == "Item #SKU987";) 
     alert('index: '+i+' contains "Item #SKU987"'); 
}); 

jsfiddle

+0

спасибо - я получаю 'undefined' – Haim

+0

Можете ли вы опубликовать сообщение об ошибке ... какая строка? Сколько присутствующих элементов имеет '.item'?Возможно, возникла ошибка с вашим кодом ... Вы проверили свой html? Вы можете подтвердить свой html ссылкой [this] (http://www.freeformatter.com/html-validator.html). @Haim –

+0

мой HTML действителен - есть только один класс под названием item – Haim

0

попробовать этот

if ($(".item").text() == "Item #SKU987") { 
alert("Hello! This works!"); 
} 
+0

Как этот код проверяет текст 'Item # SKU987'? –

+0

теперь выглядит хорошо, не так ли? –

+0

все еще получает 'undefined' – Haim

0

Вставьте код внутри $(document).ready();. Тогда это сработает. Я приложил образец кода. Ваша проблема заключалась в том, что ваш dom не загружался, когда вы вызывали селектор.

<html> 
 
\t <head> 
 
\t \t <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 
\t \t <script> 
 
\t \t $(document).ready(function(){ 
 
\t \t \t if (jQuery('div.item:contains("Item #SKU987")').length) { 
 
\t \t \t \t alert("Hello! This works!"); 
 
\t \t \t } 
 
\t \t }); 
 
\t \t </script> 
 
\t </head> 
 
\t <body> 
 
\t \t <div class="item">Item #SKU987</div> 
 
\t </body> 
 

 
</html>

2

второе решение знакомства @ HenryDev в. Если вы запустите его в консоли, вы получите undefined в результате, потому что этот оператор if не имеет самого значения. Просто проигнорируйте этот результат в консоли. При использовании indexOf вы должны знать о случае букв. Вы уверены, что текст, который вы ищете, находится в точном случае, а не в нижнем или верхнем регистре? Используйте view-source:, чтобы убедиться, что вы ищете правильную вещь.

 Смежные вопросы

  • Нет связанных вопросов^_^