jQuery 如果 class 名称包含

jQuery if class name contains

这是我的 HTML

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

我正在尝试创建一个简单的 jQuery,但它一直在返回 undefined

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

我正在控制台中尝试这个,我不断得到 undefined

我错过了什么?

试试这个:

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

您是否尝试过使用 $(document).ready(function(){....})。这是一个解决方案。希望对您有所帮助!

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

试试这个

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

把代码放在$(document).ready();里面。然后它会起作用。我附上了示例代码。你的问题是当你调用选择器时你的 dom 没有加载。

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

</html>

参见@HenryDev 的第二个解决方案。 如果你在控制台中 运行 它,你将得到 undefined 作为结果,因为这个 if 语句本身没有价值。只需在控制台中忽略此结果即可。 使用 indexOf 时,您必须注意字母的大小写。您确定要查找的文本大小写准确,而不是小写或大写吗? 使用 view-source: 以确保您正在搜索正确的内容。