我怎样才能得到使用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()
通过指定两个参数来更改属性值,或者通过指定值来获取值。
$('#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方法来得到它