动态添加元素的调用函数

我对javascript和jquery很新,所以这可能是一个非常简单的问题。 请不要介意。

我在分区中追加新的链接(a)元素,id =“whatever”by

$("#whatever").append(jQuery('').attr('href', 'url').text('blah')); 

并调用一个函数

 $(function () { $('#whatever a').tagcloud(); }); 

在特定div内的每个链接元素上。 但是这个函数只在旧元素上调用,而不是在我刚刚动态添加的元素上调用。 我试过这样做:

 $(document).on("change", '#whatever', function () { $("whatever a").tagcloud(); }); 

但它仍然无法正常工作。

 var $link = $('').attr('href', 'url').text('blah'); $("#whatever").append($link); $link.tagcloud(); 

$(document).on("change"永远不会开火。

首先在你的例子中$("whatever a")应该是$("#whatever a")但是当我遇到这种情况时,我委托与追加相同的动作

 $("#whatever").append(jQuery('').attr('href', 'url').text('blah')); $('#whatever a').off(); $('#whatever a').tagcloud(); 

试试这个:

 $("body").on("tagcloud", "#whatever", function(){ $("#whatever").append(jQuery('').attr('href', 'url').text('blah')); }); 

有关详细信息,请查看此类似问题:

动态创建元素的事件绑定?

此外,jQuery有一些信息:

http://api.jquery.com/on/

我想留下这个评论,但不能。 希望能帮助到你。

对您的编辑的回复,请尝试以下操作:

 $(document).on("change", '#whatever', function () { $("#whatever a").tagcloud(); }); 

我想你可能已经忘记了选择器中的#。

试试这个:

 $('#whatever').on('change', 'a', function() { $(this).tagcloud(); });