2016-11-18 77 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:確保您正在尋找正確的東西。