2012-09-15 95 views
4

在下面的代碼和演示http://jsfiddle.net/jasondavis/vp2YN/3/中,您可以看到我需要獲取點擊項目的ID屬性並將其賦值給Javascript中的變量。獲取點擊鏈接的ID

現在代碼返回第一個項目的ID名稱,無論點擊哪個項目。

在JavaScript中,你可以看到我有這行註釋掉...

var clickedID = this.attr("id"); 當我使用這條線,我得到一個錯誤說:Object has no method 'attr'

請幫我拿的ID名稱點擊的鏈接,並將其分配給一個變量

HTML

<a href="#" style="display:block" class="button insertcolumn" id="one_half">2 Columns</a> 

<a href="#" style="display:block" class="button insertcolumn" id="one_third">3 Columns</a> 

<a href="#" style="display:block" class="button insertcolumn" id="one_fourth">4 Columns</a>​ 

的Javascript/J查詢

jQuery('.insertcolumn').click(function(){ 

    var clickedID = jQuery('.insertcolumn').attr("id"); 
    //var clickedID = this.attr("id"); 

    alert(clickedID); 

});​ 

演示http://jsfiddle.net/jasondavis/vp2YN/3/

回答

9

您必須引用您的jQuery的包裝點擊一個!

你想用

$(this).attr('id'); 

要獲得ID(不遍歷DOM毫無理由地)你會關閉只是調用該對象id更好。

this.id; 

但是,要訪問屬性而不管屬性的類型和屬性的名稱,請使用以下代碼。

jQuery('.insertcolumn').click(function(){ 

    var clickedID = $(this).attr('id'); 


    alert(clickedID); 

});​ 
+0

你並不總是* *需要*使用所有* jQuery的:'VAR clickedID = this.id;' –

+0

@DavidThomas真實的,但說他叫有不同的名稱ATTR?我的情況也會對此有所幫助!無論如何將更新答案 –

+1

是的;但除此之外,你不必要地創建一個jQuery對象並調用一個jQuery方法。公平的說,值得指出'attr()'方法(及其用法),但是......老實說,我總是建議指出,每個DOM交互並不總是需要jQuery。順便說一句,我不是在暗示你的答案是錯的,也許,值得給你的答案增加一些信息。 –