2012-09-15 94 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。顺便说一句,我不是在暗示你的答案是错的,也许,值得给你的答案增加一些信息。 –