2012-07-11 153 views
0

的名字這是我的HTML代碼:如何獲得點擊<a>標籤

<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鏈接。我想獲取點擊鏈接的名稱屬性。此代碼提醒我未定義檢查我的jQuery代碼,請告訴我我做錯了什麼?

我是jquery的新手,請大家幫忙。

+1

html id屬性必須是唯一的。如果你想要有幾個元素與'鏈接',那就做一個類。 'class =「link」'而不是'id =「link」' – nbrooks 2012-07-11 10:49:13

+0

@nbrooks:好的,所以我做了class =「link」並在我的jQuery代碼中添加了.link,但它仍然返回undefined。 – 2012-07-11 10:51:52

+0

查看下面的答案。 'name'應該在引號中,因爲它不是一個變量。 – nbrooks 2012-07-11 10:52:46

回答

5

的問題是,你是不是把name引號,這樣的Javascript尋找一個變量命名爲name,並沒有找到一個。您應該將其更改爲:

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

除此之外,您的id s不是唯一的。這是非法的,實際上保證將來給你帶來問題。按照@nbrooks的建議,將過度使用的id更改爲class

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 ...使用類而不是!

+0

感謝您的回覆:) – 2012-07-11 10:56:54

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 
}); 
+0

感謝您的回覆:) – 2012-07-11 10:59:24

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> 

使用類而不是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); 
}); 
}); 

使用。而不是#和您的集合

+0

感謝您的回覆:) – 2012-07-11 10:57:18

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

感謝您的回覆:) – 2012-07-11 10:57:07