2015-12-15 62 views
0

我在容器中有幾個span元素,我想匹配其中一個跨度的確切單詞來插入橫幅。我不知道如何做到這一點。在元素jQuery中查找確切的字符串

首先我想這個腳本:

$(document).ready(function(){ 
if ($('.head.titlebox span').text().trim() === "match"){ 
$('<span class="myAwesomeBanner4"></span>').insertAfter(".productbox em.price.product-card-price") 
} 
else if ($('.head.titlebox span').text().trim() === "matchother"){ 
$('<span class="myAwesomeBanner5"></span>').insertAfter(".productbox em.price.product-card-price") 
} 
}); 

這不工作 - 除非我刪除該字符串應該匹配:===「」。所以腳本似乎kike它有點作品。我無法將它與單詞匹配 - 看起來像它對我來說是正確的,所以不知道爲什麼它不起作用。

然後我嘗試這個腳本作品 - 但我不能弄清楚如何轉換if語句它的使用和創建我的div在DOM像上面插入:

$('.head.titlebox span').filter(function(index) { 
return $(this).text() === "match";}).css("background", "black"); 

我的HTML瞄準字符串:

<div class="head titlebox"> 
<span id="artid">text</span><h1 id="prod-title">text</h1> 
<span>text</span><span>text</span> 
<span>match</span> 
</div> 

那麼,爲什麼第一個不工作 - 以及如何將它與第二個腳本的工作過濾器功能相結合?

+1

您需要使用'each'超過遍歷所有元素 – Tushar

+0

你想只插入一個橫幅,還是可能兩個? –

+0

Right - '.text()'返回由選擇器匹配的第一個元素的文本。 – Pointy

回答

2

您可以通過所有span標籤需要循環,

$('.head.titlebox span').each(function() { 
    if ($(this).text() == "match") { 
     //insert your html. 
    } 
}) 
+1

請使用「===」而不是「==」 –

+0

啊。謝謝!有意義:p – Xeptor

+0

另外,Javascript提供了.match()方法來比較字符串。可能是[更好的選擇](http://www.w3schools.com/jsref/jsref_match.asp)使用:) –

0

試試這個:

$(".head").on("click", function() { 
 
    var spanList = $(".head span"); 
 
    $.each(spanList,function(span){ 
 
     console.log($(spanList[span]).text()); 
 
     if($(spanList[span]).text() === "match"){ 
 
     \t console.log("Matched") 
 
     } 
 
    }); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<div class="head titlebox"> 
 
    <span id="artid">text</span> 
 
    <h1 id="prod-title">text</h1> 
 
    <span>text</span><span>text</span> 
 
    <span>match</span> 
 
</div>

相關問題