简体   繁体   English

Jquery:获取动态创建元素的属性值

[英]Jquery: Get attribute value of dynamically created element

I created a div dynamically, and on click event I want to get it's attribute value, but when I try to do that, it throws me an error.我动态创建了一个 div,并且在单击事件时我想获取它的属性值,但是当我尝试这样做时,它会抛出一个错误。 " jQuery(...).attr(...).val is not a function ", refer my code below 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();
    });

Actually the error is in this line :实际上错误在这一行:

var bid=jQuery(this).attr("data-rel-pid").val();

There is no need to cal .val() on .attr()不需要在 .attr() 上调用 .val()

var bid=jQuery(this).attr("data-rel-pid");

.attr() itself will return the value. .attr() 本身将返回值。

For more to this, refer here .有关更多信息,请参阅此处

As you are already using jQuery and you want to fetch a data attribute you can also do something like this.由于您已经在使用 jQuery 并且想要获取数据属性,因此您也可以执行类似的操作。

$("#target2").on("click", function(){
 var bid=$(this).data("rel-pid");
});

Remove the .val()删除 .val()

jQuery("#target2").on("click", function(){
var bid=jQuery(this).attr("data-rel-pid");
});

As target2 is being appended later in the life cycle of the web page, you need to use event delegation to attach event to dynamically appended elements.由于target2在网页生命周期的后期被追加,您需要使用event delegation将事件附加到动态追加的元素。

Remove .val() , Use .attr() to get the value of an attribute for the first element in the set of matched elements or set one or more attributes for every matched element.删除.val() ,使用.attr()获取匹配元素集中第一个元素的属性值,或者为每个匹配元素设置一个或多个属性。

Try this:尝试这个:

 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>

You can use this code -您可以使用此代码 -

jQuery("#target2").on("click", function(){
    var bid = jQuery(this).data("rel-pid");
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM