JQuery: программно добавленные якоря не связаны с моей функцией щелчка - PullRequest
1 голос
/ 28 октября 2010

Я новичок в JQuery и пытаюсь использовать его для реализации улучшения в старом веб-приложении.

Я собираю список строк с сервера и отображаю каждую из них в своем собственном теге привязки, чтобы они появлялись в списке через запятую. Я назначаю эту сгенерированную разметку внутреннему html диапазона:

$.getJSON("http://domain/restOfURL",
    function(data){
        var anchorString = "";
        $.each(data.companies, function(i,companies){                                    
            if (i > 0)
            {
                anchorString += ", ";
            }
            anchorString += '<a class="sr" href="#">' + companies + '</a>';
        });
        $("#anchorsListSpan").html(anchorString);
    });
});

Все это работает, и я вижу якоря на веб-странице в реальном времени. Разметка выглядит так в Firebug:

<span id="anchorsListSpan">
    <a class="sr" href="#">ABC</a>
    ,
    <a class="sr" href="#">Apple</a>
    ,
    <a class="sr" href="#">Apollo</a>
</span>

Проблема, с которой я столкнулся, заключается в том, что сгенерированные якоря не вызывают срабатывание события click:

$("a.sr").click(function(){
    alert("link clicked");
});

Я заметил, что если я жестко закодирую подобные якоря в этом div, событие click срабатывает. По некоторым причинам те, которые я добавлю программно, не вызовут событие click.

Кто-нибудь видит, что я здесь делаю неправильно?

Спасибо за любую помощь,

Ответы [ 2 ]

3 голосов
/ 28 октября 2010

Используйте live () вместо click ():

$("a.sr").live("click", function(){
    alert("link clicked");
});
2 голосов
/ 28 октября 2010

Попробуйте использовать $("a.sr").live('click', function() {//...});

...