2017-05-05 68 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