在javascript中获取类名时出错

时间:2014-06-30 14:00:55

标签: javascript jquery html5

我在HTML中有这个代码片段

<ul class="orderedList">
    <li class="il l1">Appathon 2k14</li>
    <li class="il l2">Da Vinci Code</li>
    <li class="il l3">Java Beans</li>
    <li class="il l4">Gigabyte Wars</li>
    <li class="il l5">Spin A Web</li>
</ul>

我的jquery脚本中的每个列表项都有事件处理程序,如下所示:

$(".l1").click(function x() {
    alert("Description : \n " + eventsDescription[0] + "\n\nLocation : \n" + loc[0]);
});
$(".l2").click(function x() {
    alert("Description : \n " + eventsDescription[1] + "\n\nLocation : \n" + loc[1]);
});
$(".l3").click(function x() {
    alert("Description : \n " + eventsDescription[2] + "\n\nLocation : \n" + loc[2]);
});
$(".l4").click(function x() {
    alert("Description : \n " + eventsDescription[3] + "\n\nLocation : \n" + loc[3]);
});
$(".l5").click(function x() {
    alert("Description : \n " + eventsDescription[4] + "\n\nLocation : \n" + loc[4]);
});

现在我正在考虑优化我的逻辑:

$(".il").click(function x() {
    alert($(".il").attr("class"));
});

由于&#39; il&#39; 是每个标记(列表项)中的一个类,当我点击任何列表项时,它应该返回该类的名称。我的问题是,当我点击任何列表项时,我会在&#39; l1 il&#39; 中得到警告对话框中的结果。

根据我的代码,我认为我应该通过点击第二项来获得&#39; l2 ,依此类推其他项目。

2 个答案:

答案 0 :(得分:5)

您应该使用$(this)参考

$(".il").click(function x() { alert($(this).attr("class")); });

在您的代码中,您在元素集合上调用.attr(),这会导致检索该集合中0索引处的元素的类名。

答案 1 :(得分:0)

Aravind代码是写的。你想要另一个选择试试这个

$(".orderedList li").click(function() { alert($(this).attr("class")); });