如何获取所点击的<a> tag</a>的名称

时间:2012-07-11 10:48:04

标签: javascript jquery

这是我的HTML代码:

<div class="span4">
<div class="hero-unit" style="padding:10px 10px 10px 10px">
    <div class="accordion" id="accordion2">
        <div class="accordion-group">
            <div class="accordion-heading">
                <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseOne">
                North Delhi
                </a>
            </div>
            <div style="height: 0px;" id="collapseOne" class="accordion-body collapse">
                <div class="accordion-inner">
                    <ol>
                        <li><a id='link' href="#" name="Some name1 ">Some link1</a> </li>
                        <li><a id='link' href="#" name="Some name2">Some link2</a> </li>
                    </ol>
                </div>
            </div>
        </div>
    </div>

这是我的jQuery代码

$(document).ready(function() {
    $('#link').click(function() {
        var n = $(this).attr(name); //alerts undefined
        alert(n);
        $('#results').html('&nbsp;').load('/donate/?n=' + n);
    });
});

我的HTML代码有几个带有多个链接的折叠式内部div。我想获取点击链接的name属性。这段代码警告我未定义检查我的jQuery代码,请告诉我我做错了什么?

我是jquery的新手,所以请帮忙。

5 个答案:

答案 0 :(得分:5)

问题在于您没有将name放在引号中,因此Javascript会查找名为name变量但找不到它。你应该改为:

var n = $(this).attr("name");

除此之外,您的id不是唯一的。这是非法的,实际上保证将来会给你带来麻烦。按照@nbrooks的建议,将过度使用的id更改为class

答案 1 :(得分:2)

使用引号作为属性名称

$(document).ready(function() {
$('#link').click(function() {
    var n = $(this).attr("name");   //alerts undefined <- quotes here
    alert(n);
    $('#results').html('&nbsp;').load('/donate/?n=' + n);
});
});

稍后编辑:不要使用重复的ID ...而是使用class!

答案 2 :(得分:2)

您的链接都具有相同的id属性,HTML规范要求这些属性是唯一的。 jQuery只给你一个元素。改为使用类属性/选择器组合:

<li><a class='link' href="#" name="Some name1 ">Some link1</a> </li>
<li><a class='link' href="#" name="Some name2">Some link2</a> </li>

$(".link").click(function() {
     var n1 = $(this).attr("name");  //Name should be a string here
     var n2 = this.name  //name should be a variable here
});

答案 3 :(得分:2)

$('#link').click(function() {
   var n = $(this).attr("name"); 
});

答案 4 :(得分:1)

首先将你的李改为这些

<li><a class='link' href="#" name="Some name1 ">Some link1</a> </li>
<li><a class='link' href="#" name="Some name2">Some link2</a> </li>

使用class而不是id,因为这违反了CSS ..

然后将您的jquery更改为此

$(document).ready(function() {
$('.link').click(function() {
var n = $(this).attr('name');   //alerts undefined
alert(n);
$('#results').html('&nbsp;').load('/donate/?n=' + n);
});
});

使用。而不是#和你的设置