jQuery将每个绑定到动态填充的元素

时间:2013-03-06 06:04:48

标签: jquery dynamic bind each

下面的情景:

在ajax返回时,我想更改文档中的一些链接。其中一些是硬编码的其他动态生成的。

function( data ) {
   $('a.imageselect').each(function() {
      var imgValue = $(this).attr('href');
      $(this).attr('href', imgValue.replace('publish_img', 'edit_img/'+data.dbid));
   });
}

它的工作原理与硬编码元素一样,但不适用于那些:

$("#chooseimg").after('<a href="'+imgUrl+'" class="imageselect">foo</a>");

我知道也许“on”可以帮助我 - 但我不知道在这种情况下如何使用。

2 个答案:

答案 0 :(得分:0)

$(document).on("click", ".button-delete", function() {
    console.log("inside");
});

.on的用法如上所述,但我认为在这种情况下你需要为

创建一个函数
function my_func() {
    $('a.imageselect').each(function() {
     var imgValue = $(this).attr('href');
     $(this).attr('href', imgValue.replace('publish_img', 'edit_img/'+data.dbid));
    });
}

并在添加动态数据后调用它。

$("#chooseimg"]).after('<a href="'+imgUrl+'" class="imageselect">foo</a>');
my_func();
像这样。

答案 1 :(得分:0)

您的代码是正确的。也许你使用旧版本的jQuery。 我在这个脚本中测试了你的代码,一切正常:

<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript">
$(document).ready(function() {
    $('#button').on('click', function() {
        var imgUrl = 'publish_img';
        $("#chooseimg").after('<a href="'+imgUrl+'" class="imageselect">foo</a>');
    });

    $('#button2').on('click', function() {
        change('1');
    });
});

function change( data ) {
   $('a.imageselect').each(function() {
      var imgValue = $(this).attr('href');
      $(this).attr('href', imgValue.replace('publish_img', 'edit_img/'+data));
   });
}
</script>

<input type="button" id="button" name="add" value="Add link!" /><br />
<input type="button" id="button2" name="change" value="Change" />

<div id="chooseimg">

</div>
</body>
</html>