<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:
$('#test').attr('id')
在你的例子中:
$(document).ready(function() {
console.log($('#test').attr('id'));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="test"></div>
或通过 DOM:
$('#test').get(0).id;
甚至可以:
$('#test')[0].id;
$('#test').get(0)
或者$('#test')[0]
在JQuery中使用的原因是$('#test')
返回一个结果数组,而不是一个单一元素。
JQuery中另一种DOM选择器的替代方法是
$('#test').prop('id')
这与.attr()
和$('#test').prop('foo')
不同,前者获取指定的DOM foo
属性,而后者获取指定的HTML foo
属性。您可以在此处找到更多差异的详细信息。
$('#test').id()
这样的快捷方式,我都感到惊讶。 - awereturn $('.selector').map(function(i, dom){ return $(dom).attr('data-id'); })
- revokeid
是 HTML Element
的一个属性。然而,当你写 $("#something")
时,它会返回一个包装匹配的 DOM 元素的 jQuery 对象。如果要获取第一个匹配的 DOM 元素,请调用 get(0)
$("#test").get(0)
在这个原生元素上,您可以调用 id 或任何其他原生 DOM 属性或函数。
$("#test").get(0).id
这就是为什么你的代码中 id
不起作用的原因。
或者,就像其他答案建议的那样,使用 jQuery 的 attr
方法来获取第一个匹配元素的 id
属性。
$("#test").attr("id")
前面的回答很好,但随着jquery的发展...你也可以这样做:
var myId = $("#test").prop("id");
attr()
是在1.0版本中添加的,而prop()
是在1.6版本中添加的,因此我认为你的评论应该是指prop()
是新的方式。 - Erik Philipsattr
)或潜在地被脚本修改过的输出(prop
)感兴趣。如果你没有使用客户端脚本实际修改任何元素的id
属性,则prop
和attr
是相同的。 - AntonChanning$.fn.extend({
id : function() {
return this.attr('id');
}
});
alert( $('#element').id() );
当然需要一些检查代码,但很容易实现!
$('.your-selector').click(function(){
var id = $(this).attr('id');
});
.id
不是一个有效的jQuery函数。您需要使用.attr()
函数来访问元素拥有的属性。您可以使用.attr()
通过指定两个参数来更改属性值,或者通过指定一个参数来获取值。
$('#test').attr('id')
<div id="test"></div>
$(document).ready(function() {
alert($('#test').attr('id'));
});
$("#button").click(function() {
var clickID = $("#testDiv").attr("id");
console.log(clickID)
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="testDiv"> When button will click you'll get this id value </div>
<button id="button"> Button </button>
看起来目前还没有解决方案,我想提出自己的解决方案,这是 JQuery 原型的扩展。我将其放在 Helper 文件中,在 JQuery 库加载后加载,因此要检查 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库的开端。
返回单个字符串值或字符串值数组。如果使用了多元素选择器,则返回字符串值数组。