Jquery:获取动态创建元素的属性值
Jquery: Get attribute value of dynamically created element
我动态创建了一个div,在单击事件时,我想获取它的属性值,但是当我尝试这样做时,它会给我一个错误。" jQuery(...).attr(...).val is not a function
",请参考下面的代码
jQuery("#target1").on("click", function(){
jQuery("#target_block").append('`<div id="target2" data-rel-pid="12345">Click Me</div>`');
});
jQuery("#target2").on("click", function(){
var bid=jQuery(this).attr("data-rel-pid").val();
});
实际上错误出在这一行:
var bid=jQuery(this).attr("data-rel-pid").val();
没有必要在 .attr() 上 cal .val()
var bid=jQuery(this).attr("data-rel-pid");
.attr() 本身将返回该值。
有关此内容的更多信息,请参阅此处。
删除 .val()
jQuery("#target2").on("click", function(){
var bid=jQuery(this).attr("data-rel-pid");
});
由于您已经在使用 jQuery 并且想要获取数据属性,因此您也可以执行类似操作。
$("#target2").on("click", function(){
var bid=$(this).data("rel-pid");
});
由于target2
在网页生命周期的后期追加,因此需要使用event delegation
将事件附加到动态追加的元素。
删除.val()
,使用 .attr()
获取匹配元素集中第一个元素的属性值,或为每个匹配元素设置一个或多个属性。
试试这个:
jQuery("#target1").on("click", function() {
jQuery("#target_block").append('<div id="target2" data-rel-pid="12345">Click Me</div>');
});
jQuery("#target_block").on("click", '#target2', function() {
var bid = jQuery(this).attr("data-rel-pid");
alert(bid);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<div id="target1">target1</div>
<div id="target_block">target_block</div>
您可以使用此代码 -
jQuery("#target2").on("click", function(){
var bid = jQuery(this).data("rel-pid");
});
相关文章:
- 锚点元素的href属性自动更改
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 带有填充属性的SVG矩形显示在包含元素的上方插入框阴影
- 通过id和class属性获取元素
- 如何通过HTML+CSS中的另一个元素Selector更改元素的属性值
- 如何正确引用传递到淘汰中的当前元素的属性.JS
- javascript来显示元素属性
- 自定义HTML元素属性未显示-Web组件
- 如何使用element.myobj.prop等具有对象属性的元素
- 将特定属性动态添加到元素中
- Javascript获取具有不同id的文件数's来自没有多个属性的文件输入元素
- 为什么样式属性不适用于使用DOMParser创建的元素
- .querySelectorAll如何只获取具有所有属性的元素
- 如何使用jQuery按数据日期属性选择元素
- 使用数据属性将HTML数据复制到另一个元素
- JQuery:使用clone()生成的元素不采用原始的事件属性
- 价格滑动过滤器-隐藏父属性元素
- 未捕获的类型错误:不能读取属性'元素不存在
- 将信息存储在变量与数据属性元素中
- 添加HTML5 DATA属性元素存储在Javascript变量