我怎样才能得到使用jQuery元素的ID?

<div id="test"></div> <script> $(document).ready(function() { alert($('#test').id); }); </script> 

为什么不上述工作,我应该怎么做?

jQuery方式:

 $('#test').attr('id') 

在你的例子中:

 <div id="test"></div> $(document).ready(function() { alert($('#test').attr('id')); }); 

或者通过DOM:

 $('#test').get(0).id; 

甚至 :

 $('#test')[0].id; 

$('#test').get(0)在JQuery中甚至$('#test')[0]$('#test')是一个JQueryselect器并返回一个数组()结果不是由其默认function的单个元素

在jquery DOMselect器的替代是

 $('#test').prop('id') 

.attr() $('#test').prop('foo') $('#test').attr('foo')获取指定的HTML foo属性,它和.attr()$('#test').prop('foo')属性,你可以在这里find更多关于差异的细节。

$('selector').attr('id')将返回第一个匹配元素的id。 参考 。

如果你的匹配集包含多个元素,你可以使用传统的.each 迭代器返回一个包含每个id的数组:

 var retval = [] $('selector').each(function(){ retval.push($(this).attr('id')) }) return retval 

或者,如果你愿意得到一点点砂砾,你可以避免包装,并使用.map 快捷方式 。

 return $('.selector').map(function(index,dom){return dom.id}) 

id是一个html Element的属性。 但是,当你写$("#something") ,它会返回一个包装匹配的DOM元素的jQuery对象。 要返回第一个匹配的DOM元素,请调用get(0)

 $("#test").get(0) 

在这个本地元素上,你可以调用id,或其他本地DOM属性或函数。

 $("#test").get(0).id 

这就是为什么id不能在你的代码中工作的原因。

或者,使用jQuery的attr方法作为其他答案build议获取第一个匹配元素的id属性。

 $("#test").attr("id") 

以上答案是伟大的,但随着jQuery的演变..所以你也可以这样做:

 var myId = $("#test").prop("id"); 
 $.fn.extend({ id : function() { return this.attr('id'); } }); alert( $('#element').id() ); 

一些检查代码当然需要,但很容易实现!

.id不是一个有效的jquery函数。 您需要使用.attr()函数来访问元素拥有的属性。 您可以使用.attr()通过指定两个参数来更改属性值,或者通过指定值来获取值。

http://api.jquery.com/attr/

$('#test')返回一个jQuery对象,所以你不能简单地使用object.id来获得它的Id

你需要使用$('#test').attr('id') ,它将返回你所需的元素ID

这也可以如下完成,

$('#test').get(0).id它等于document.getElementById('test').id

如果你想得到一个元素的ID,让我们说一个类select器,当一个事件(在这种情况下,点击事件)被触发的特定元素,然后下面的工作:

  $('.your-selector').click(function(){ var id = $(this).attr('id'); }); 

也许有用的人find这个线程。 下面的代码将只适用于你已经使用jQuery。 该函数总是返回一个标识符。 如果元素没有标识符,函数会生成标识符并将其附加到元素。

 var generatedIdCounter = 0; $.fn.id = function() { var identifier = this.attr('id'); if(!identifier) { generatedIdCounter++; identifier = 'isGenerated_' + generatedIdCounter; this.attr('id', identifier); } return identifier; } 

如何使用:

 $('.classname').id(); $('#elementId').id(); 

好吧,似乎还没有解决scheme,并希望提出自己的解决scheme,这是JQuery原型的扩展。 我把它放在一个在JQuery库之后加载的Helper文件中,因此检查了window.jQuery

 if (window.jQuery) { $.prototype.id = function () { if (this.length > 1) { var val = []; this.each(function (idx, el) { val.push($(el).id()); }); return val; } else { return this.attr('id'); } } } 

它可能不完美,但是可能包含到JQuery库中是一个开始。

返回单个string值或string值数组。 string值的数组是用于多元素select器的事件。

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

使用上面的代码,你可以得到id。

这是一个古老的问题, 但到2015年这实际上可能工作:

 $('#test').id; 

你也可以做任务:

 $('#test').id = "abc"; 

只要你定义了下面的JQuery插件:

 Object.defineProperty($.fn, 'id', { get: function () { return this.attr("id"); }, set: function (newValue) { this.attr("id", newValue); } }); 

有趣的是,如果element是一个DOM元素,那么:

 element.id === $(element).id; // Is true! 

$('#test').attr('id')在你的例子中:

 <div id="test"></div> $(document).ready(function() { alert($('#test').attr('id')); }); 

重要提示:如果您使用jQuery创build新对象并绑定事件,则必须使用prop而不是attr ,如下所示:

$("<div/>",{ id: "yourId", class: "yourClass", html: "<span></span>" }).on("click", function(e) { alert($(this).prop("id")); }).appendTo("#something");

这可以是元素ID,类,或自动使用偶数

 ------------------------ $(this).attr('id'); ========================= ------------------------ $("a.remove[data-id='2']").attr('id'); ========================= ------------------------ $("#abc1'").attr('id'); ========================= 

这将最终解决您的问题:

可以说你在页面上有许多button,并且你想用jQuery Ajax(或者不是ajax)来改变其中的一个,这取决于它们的ID。

也可以说,你有许多不同types的button(表单,批准和类似的目的),你想让jQuery只处理“喜欢”button。

这里是一个正在工作的代码:jQuery将只处理类.cls-hlpb的button,它将采用被点击的button的id,并将根据来自ajax的数据进行更改。

 <!DOCTYPE html> <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"> </script> <script> $(document).ready(function(){ $(".clshlpbtn").on('click',function(e){ var id = $(e.target).attr('id'); alert("The id of the button that was clicked: "+id); $.post("demo_test_post.asp", { name: "Donald Duck", city: "Duckburg" }, function(data,status){ //parsing the data should come here: //var obj = jQuery.parseJSON(data); //$("#"+id).val(obj.name); //etc. if (id=="btnhlp-1") $("#"+id).attr("style","color:red"); $("#"+id).val(data); }); }); }); </script> </head> <body> <input type="button" class="clshlpbtn" id="btnhlp-1" value="first btn"> </input> <br /> <input type="button" class="clshlpbtn" id="btnhlp-2" value="second btn"> </input> <br /> <input type="button" class="clshlpbtn" id="btnhlp-9" value="ninth btn"> </input> </body> </html> 

代码从w3schools被采取并且改变了。

因为id是一个属性,所以你可以通过使用attr方法来得到它