JQuery - невозможно выбрать динамически созданный тег URL по классу - PullRequest
2 голосов
/ 20 сентября 2011

Итак, я создаю TagCloud для своего сайта и у меня возникают проблемы с возможностью использования JQuery, чтобы предупредить меня о выбранной ссылке.Сайт создал ссылки просто отлично, дает им класс tagLink, но когда я пытаюсь предупредить количество элементов с этим классом, он дает мне 0. Любые идеи?Вот мой код:

    $(function() {  
    //get tag feed  
    $.getJSON("tagcloud/tagcloud.php?callback=?", function(data) {  
          //create list for tag links  
        $("<ul>").attr("id", "tagList").appendTo("#tagCloud");  
        //create tags  
        $.each(data.tags, function(i, val) { 
            //create item  
            var li = $("<li>");  
            //create link  
            $("<a>").addClass('tagLink').text(val.tag).attr({title:"See all pages tagged with " + val.tag, href:"tags/" + val.tag + ".php", id: val.tag}).appendTo(li);  
            //set tag size  
            li.children().css("fontSize", (val.freq / 10 < 1) ? val.freq / 10 + 1 + "em": (val.freq / 10 > 2) ? "2em" : val.freq / 10 + "em");
            //add to list  
            li.appendTo("#tagList");  
        });   
    }); 

     //Increase database if link is clicked 
    alert($('.tagLink').size());//Test how many exist
    $('.tagLink').click(function(){
        var id = $(this).attr('id');
        $.ajax({    
            url: "tagcloud/tagcloud.php",
            type: "POST",
            data: {clicked : id}
        });
    });


});

Ответы [ 2 ]

4 голосов
/ 20 сентября 2011

getJSON является асинхронным, поэтому ваш селектор запускается до того, как ссылки на теги будут добавлены.Переместите назначение обработчика клика по тегу внутри вашего обратного вызова AJAX.

0 голосов
/ 14 апреля 2013

Вместо этого вы можете использовать $ .get () или $ .ajax ().

...