动态添加元素的调用函数

时间:2013-11-30 20:40:55

标签: javascript jquery html

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

我通过

在id =“whatever”的分区中追加新的链接(a)元素
$("#whatever").append(jQuery('<a>').attr('href', 'url').text('blah'));

调用函数

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

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

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

但它还没有奏效。

6 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

首先在您的示例中$("whatever a")应该是$("#whatever a"),但是当我遇到这种情况时,我会委托与附加内容相同的操作

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

答案 2 :(得分:0)

试试这个:

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

请查看此类似问题以获取更多信息:

Event binding on dynamically created elements?

此外,jQuery还有一些信息:

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

我想留下这个评论,但不能。希望它有所帮助。

答案 3 :(得分:0)

对您的修改的回复,请尝试以下操作:

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

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

答案 4 :(得分:0)

似乎它没有按预期工作,因为您缺少将rel属性添加到要追加的元素中。

// ...
// The plugin reads the rel attributes
var tagWeights = this.map(function(){
   return $(this).attr("rel");
});

试试这个:

$('<a>').attr({'href': 'url', 'rel': 'value'})
        .text('blah')
        .tagcloud()
        .appendTo('#someWhere');

http://jsbin.com/uBAzItuj/3

答案 5 :(得分:-1)

试试这个:

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