2014-11-24 70 views
-1

我網站上的產品頁面在字符串中顯示#productID,即「產品ID:743961」。使用jQuery我想採用這個#productID字符串,並將其與ID數組進行比較。如果#productID與陣列中的ID匹配,我想追加一條消息。jquery如果字符串匹配數組中的值

<div id="productID"> Product ID: 743961 </div> 

我最初嘗試做以下工作,但一直在努力獲得理想的結果。

var myArray = [ 743961, 743963, 743965 ]; 
$("#prod_code:contains('myArray')").css("text-decoration", "underline"); 

我的數組有2000多個項目,所以這可能不是最好的解決方案。我知道Ajax是最好的解決方案,但在這種情況下無法使用它。

回答

3

有了這麼大的陣列,聽起來像AJAX將是一個更好的解決方案。但是,如果您必須使用此模式,您首先需要從元素文本中獲取productId值,然後可以確定它是否存在於數組中。事情是這樣的:

var productId = $.trim($('#productID').text().split(':')[1]); 
if ($.inArray(productId, myArray) >= 0) 
    $('#prod_code').css('text-decoration', 'underline'); 

這顯然是一個相當簡單的例子,你將最有可能需要在產品ID的提取更多的驗證,以使其更加堅固。

+0

我比我的解決方案+1更喜歡這個。運行數千個選擇器匹配將會很昂貴。 – Barmar 2014-11-24 17:25:36

+0

謝謝你的回覆Rory。我知道Ajax對於這個例子來說是最好的解決方案,但是由於我對FTP的訪問有限,所以我無法在這個例子中使用它。 – Liondedan 2014-11-24 17:31:22

+0

您需要修復ID以及if語句。 $ .inArray如果未找到則返回-1,否則返回索引。所以在你的例子中,如果數組匹配第一個元素,當你想要true的時候,你會得到0返回值和false。另外,trim會返回一個字符串。像這樣http://jsfiddle.net/j08691/nn9swwra/ – j08691 2014-11-24 17:33:01

相關問題