JQuery关键字“;这个“;未获取属性值
JQuery keyword "this" does not get attribute value
我在玩JQuery关键字this。
我遇到了一些我不理解的事情。这是我的代码:
<body>
<a id="link_1">jQuery.com</a>
<!-- adding JQUERY -->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<!-- my JavaScript -->
<script>
$("a").attr("href", "target_1");
$("a").attr("new_attribute", "new_attribute_value");
$(function ($) {
$("a").mouseenter(function(){
alert(this.id);
alert(this.href);
alert(this.new_attribute);
});
});
</script>
</body>
我希望JQuery将id、href和我的new_attribute作为警报消息返回。
我可以调用关键字"this"上的id(使用this.id),它可以按预期工作。我也可以在关键字this上调用href(使用this.href),它可以按预期工作(即使我只使用JQuery设置href的值(非内联))。
然而,对于新属性"new_attribute",这种集合&get没有按预期工作。
我的问题:我做错了什么?是否只能对关键字"this"调用"certific/limited"属性
new_attribute
不是一个有效的属性。
一些内置属性被映射到属性,当你进行时
this.id
您实际上得到的是id
属性,而不是属性,因为这将是
this.getAttribute('id')
你可以做
this.getAttribute('new_attribute')
但是您确实应该使用data-*
属性,而不是自己的属性,但是jQuery的data()
在内部映射数据,不添加属性,但在您的情况下,这可能是您想要的,只需在元素上存储任意数据
$("a").attr("href", "target_1");
$("a").data("new_attribute", "new_attribute_value");
$(function ($) {
$("a").mouseenter(function(){
alert(this.id);
alert(this.href);
alert( $(this).data('new_attribute') );
});
});
在这种情况下,this
指向HTMLAnchorElement对象,这里的问题是HTMLElement属性及其属性之间的差异。简单地说,属性是作为HTML的一部分呈现的,并用于HTML标记端的附加对象声明性配置。
另一方面,对象的某些属性并不总是具有相应的属性。有时他们会这样做,但在大多数情况下,他们不会。
您可以像使用new_attribute
一样将任意属性设置为HTMLElement,但此自定义属性值不会成为对象属性。因此,读取这样的自定义属性作为属性将生成undefined
。
"this"指的是DOM元素(try-console.log(this))。元素公开其id属性,如您所见:https://developer.mozilla.org/en-US/docs/Web/API/element
由于它是一个A元素,它还公开了它的href属性。但它永远不知道你的自定义属性。所以它不能暴露它。
在你的事件处理程序中试试这个:
var $this = $(this);
alert($this.attr('new_attribute'));
您需要将this
视为选择器,因此将其编写为$(this)
您的问题是使用attr()
方法设置了一个属性,但通过调用jQuery的prop()
的等效方法来查询(获取)它。
由于这是一个非标准属性,锚<a>
元素HTMLAnchorElement
的主接口或它在DOM中继承的其他接口没有/实现new_attribute
属性,因此this.new_attribute
将始终返回undefined
。
然而,如果你想继续尝试this
关键字,你可以试试this.attributes['new_attribute']
,这样你的编码之旅就不会有任何令人不快的惊喜了:)
- 通过id和class属性获取元素
- 使用javascript从节点属性获取数组值
- 如何在jquery中通过自定义属性获取输入字段的值
- 通过特定的数据属性获取元素
- 如何使用js/jquery将数组中的数据属性获取到DOM上的h3中
- 在 GWT 中按属性获取 DOM 元素
- 将从元素的数据属性获取的字符串转换为 json
- 角度表达式从对象数组中的相等属性获取对象的属性
- 仅从背景图像属性获取 URL
- 通过 Javascript 从 href 属性获取查询字符串
- 如何使用事件触发器和自定义属性获取元素的子元素
- jQuery从标题属性获取动态生成的内容
- 单击时从数据属性获取更新的值
- jQuery 从数据属性获取路径
- 使用属性获取对象值的运行时间
- 通过 src 属性获取元素,使用 javascript 而不是 jquery
- 如何从 href 属性获取默认 id 值
- 使用 javascript 按属性获取 iframe 的元素
- 使用 jQuery 按名称属性获取选择值
- 硒:借助链接等属性获取元素的路径