2017-05-05 28 views
1

我有一個數組:jQuery的申請addClass僅鏈接如果鏈接文本是在陣列

var List2 = ['Maine', 'Maryland', 'Massachusetts', 'New Jersey', 'Oklahoma']; 

我在他們的鏈接,每個鏈接類。一是PHP生成錶行。

<a class="one" href="http://www.maine.gov/aPage.shtml">Maine</a> 
<a class="one" href="https://www.colorado.gov/aPage.aspx">Colorado</a> 

一旦點擊該鏈接,目標是打開一個div如果鏈接文本的狀態是陣列(如緬因州)的,但打開鏈接,如果在鏈接文本的狀態不(例如科羅拉多州)

要做到這一點,我想添加一個類,.openDiv,只適用於那些鏈接文本出現在數組中。 .openDiv將被用來打開div。

我正在迭代(我認爲)使用each()來查找數組中的所有文本鏈接並應用openDiv。

當我手動測試它們時,兩個鏈接都正常工作,但是我的addClass代碼正在將.openDiv應用於列表中的每個鏈接,我不知道如何將它限制在數組中。我的.js腳本位於頁面的底部。

下面的代碼

$(document).ready(function() 
{var List2 = ['Idaho', 'District of Columbia', 'Maine', 'Maryland', 'New Jersey', 'Oklahoma']; 

$("a[href]").each(function() { 
if(jQuery.inArray($("a[href]").html(), List2) !== -1) { 
$("a[href]").addClass('openDiv'); 
} 
}); 
$(".openDiv").click(function(e) { 
e.preventDefault(); 
$("#notInList1").slideToggle(200); 
}); 
}); 

我已經試過

$("a[href]").text() 

和各種形式的$這一點,但沒有去。我讀過3或4個其他問題,但沒有一個是相同的。 有誰知道我應該如何使用$ this來解決它,或者是我的each()函數搞砸了?

回答

2

問題是因爲您在添加類時選擇所有a[href]元素。而是使用this關鍵字在each()處理程序類加起來也只有當前元素:

$(document).ready(function() { 
 
    var List2 = ['Idaho', 'District of Columbia', 'Maine', 'Maryland', 'New Jersey', 'Oklahoma']; 
 

 
    $("a[href]").each(function() { 
 
    if (List2.indexOf($(this).text()) != -1) { 
 
     $(this).addClass('openDiv'); // note 'this' here 
 
    } 
 
    }); 
 
});
.openDiv { color: #C00; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a class="one" href="http://www.maine.gov/aPage.shtml">Maine</a> 
 
<a class="one" href="https://www.colorado.gov/aPage.aspx">Colorado</a>

+0

嗯,我也這麼認爲,但這一說法,它並沒有在其中添加.openDiv所有。 – AllThisOnAnACER

+0

剛剛看到您的延期回覆。讓我再看看 – AllThisOnAnACER

+0

好的,很好,請改變你的代碼來說List2而不是列表,我會將你的標記標記爲接受的答案。並感謝您花時間。 – AllThisOnAnACER