获取 event.target 的 parents 的属性
get attributes of event.target's parents
我有以下 HTML 代码
<html>
<head>
<script src="jquery-1.11.3.min.js"></script>
</head>
<body>
<form class="form" id="form1">
First name:<br>
<input type="text" name="firstname">
<br>
Last name:<br>
<input type="text" name="lastname">
</form>
</body>
</html>
我希望能够获得单击元素的 parent 的属性列表。
例如,如果我单击输入标签,应该返回 "class" 和 "id",因为它们是 "form" 标签的属性。
到目前为止,我设法获得了被点击元素的属性:
$(event.target.attributes)
但是,当我尝试对 parent 元素执行相同操作时,没有返回任何内容。请问我的代码有问题吗?
$($(event.target).parents().eq(0).attributes)
如果您实际上在事件处理程序中,为什么不直接使用 this
引用元素??
$(this).parent().attr("class");
这适用于直接 parent,但是如果您尝试通过直接 parent 称呼某人,您可以使用 $(this).parents
: ,
$(this).parents("form").attr("class");
编辑:由于您正在尝试获取属性列表并查看特定属性是否存在,因此您可以使用
$(this).parents("form")[0].attributes
这将 return 你一个 NamedNodeMap..
以下代码将迭代父元素,即表单元素
$.each($(event.target).parent().attributes, function() {
// this.attributes is not a plain object, but an array
// of attribute nodes, which contain both the name and value
if(this.specified) {
console.log(this.name, this.value);
}
});
此外,根据其他成员的建议,您应该使用 $(this) 代替 $(event.target)
我使用
解决了这个问题
$(event.target).parents().eq(0).each(function() {
$.each(this.attributes, function() {
if(this.specified) {
alert(this.name, this.value);
}
});
});
我有以下 HTML 代码
<html>
<head>
<script src="jquery-1.11.3.min.js"></script>
</head>
<body>
<form class="form" id="form1">
First name:<br>
<input type="text" name="firstname">
<br>
Last name:<br>
<input type="text" name="lastname">
</form>
</body>
</html>
我希望能够获得单击元素的 parent 的属性列表。 例如,如果我单击输入标签,应该返回 "class" 和 "id",因为它们是 "form" 标签的属性。
到目前为止,我设法获得了被点击元素的属性:
$(event.target.attributes)
但是,当我尝试对 parent 元素执行相同操作时,没有返回任何内容。请问我的代码有问题吗?
$($(event.target).parents().eq(0).attributes)
如果您实际上在事件处理程序中,为什么不直接使用 this
引用元素??
$(this).parent().attr("class");
这适用于直接 parent,但是如果您尝试通过直接 parent 称呼某人,您可以使用 $(this).parents
: ,
$(this).parents("form").attr("class");
编辑:由于您正在尝试获取属性列表并查看特定属性是否存在,因此您可以使用
$(this).parents("form")[0].attributes
这将 return 你一个 NamedNodeMap..
以下代码将迭代父元素,即表单元素
$.each($(event.target).parent().attributes, function() {
// this.attributes is not a plain object, but an array
// of attribute nodes, which contain both the name and value
if(this.specified) {
console.log(this.name, this.value);
}
});
此外,根据其他成员的建议,您应该使用 $(this) 代替 $(event.target)
我使用
解决了这个问题$(event.target).parents().eq(0).each(function() {
$.each(this.attributes, function() {
if(this.specified) {
alert(this.name, this.value);
}
});
});