<div id="test"></div>
<script>
$(document).ready(function() {
alert($('#test').id);
});
</script>
为什么上面的方法不起作用,我应该怎么做?
<div id="test"></div>
<script>
$(document).ready(function() {
alert($('#test').id);
});
</script>
为什么上面的方法不起作用,我应该怎么做?
当前回答
嗯,似乎还没有解决方案,我想提出我自己的解决方案,这是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库的一个开始。
返回单个字符串值或字符串值数组。字符串值数组用于使用多元素选择器的事件。
其他回答
id是html元素的属性。然而,当您编写$(“#something”)时,它返回一个jQuery对象,该对象包装匹配的DOM元素。要获取第一个匹配的DOM元素,请调用get(0)
$("#test").get(0)
在本机元素上,可以调用id或任何其他本机DOM属性或函数。
$("#test").get(0).id
这就是id在代码中不起作用的原因。
或者,按照其他答案的建议,使用jQuery的attr方法来获取第一个匹配元素的id属性。
$("#test").attr("id")
.id不是有效的jquery函数。您需要使用.attr()函数来访问元素拥有的属性。您可以使用.attr()通过指定两个参数来更改属性值,或者通过指定一个参数来获取值。
http://api.jquery.com/attr/
如果您想获取一个元素的ID,比如说通过类选择器,当在该特定元素上触发事件(在本例中为单击事件)时,以下操作将完成此任务:
$('.your-selector').click(function(){
var id = $(this).attr('id');
});
$('#test')返回一个jQuery对象,因此不能简单地使用object.id获取其id
您需要使用$('#test').attr('id'),它返回元素所需的id
这也可以如下进行,
$('#test').get(0).id,等于document.getElementById('test').id
$('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})