2016-11-18 69 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

您是否尝试过使用$(文件)。就绪(函数(){...})。这是一个解决方案。希望能帮助到你!

$(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

'未捕获的SyntaxError:无效或意外的标记'作为提醒,我试图在控制台中使用 – Haim

+0

@Haim我根本没有得到任何错误。您正在检查字符串“Item#SKU987”是否属于类项目正确? – HenryDev

+0

@Haim是否会说你在使用我的代码时会遇到哪些错误? – 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?您可以通过[this](http://www.freeformatter.com/html-validator.html)链接验证您的html。 @Haim –

+0

我的HTML是有效的 - 只有一个名为 – 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:确保您正在寻找正确的东西。