Jestem dość nowy w JavaScript i Jquery, więc może to być naprawdę prosty problem. Proszę nie przeszkadzać.

Dołączam nowe elementy linku (a) w podziale z ID = "cokolwiek" przez

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

I dzwoniąc do funkcji

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

Na każdym elemencie łącza w tym konkretnym div. Ale ta funkcja jest nazywana tylko na starych elementach, a nie na tych, które po prostu dodałem dynamicznie. Próbowałem tego robić:

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

Ale nadal nie działa.

3
VikkyB 1 grudzień 2013, 00:40

5 odpowiedzi

Najlepsza odpowiedź

Wydaje się, że nie działa zgodnie z oczekiwaniami, jak brakuje dodawania rel atrybutu do załączonego elementu (-ów).

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

Spróbuj tego:

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

http://jsbin.com/ubazituj/3.

0
undefined 30 listopad 2013, 22:00
var $link = $('<a>').attr('href', 'url').text('blah');
$("#whatever").append($link);
$link.tagcloud();

$(document).on("change" nigdy nie wystrzeli.

1
Pinal 30 listopad 2013, 20:43

Odpowiedź na twoją edycję, spróbuj tego:

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

Myślę, że mógłbyś zapomnieć o # w swoim wybieraniu.

1
James Y 30 listopad 2013, 21:00

Najpierw w swoim przykładzie $("whatever a") powinien być $("#whatever a"), ale także, gdy mam tę sytuację, delegować w tej samej akcji, co dołącz

$("#whatever").append(jQuery('<a>').attr('href', 'url').text('blah'));
$('#whatever a').off();
$('#whatever a').tagcloud();
0
chiliNUT 30 listopad 2013, 20:47

Spróbuj tego:

$('#whatever').on('change', 'a', function() {
     $(this).tagcloud();
 });
-1
sideroxylon 30 listopad 2013, 20:45