JQuery:以编程方式添加的锚点与我的点击功能无关

时间:2010-10-27 22:14:43

标签: jquery anchor html

我是JQuery的新手,我正在尝试使用它在旧的Web应用程序中实现增强功能。

我正在从服务器收集字符串列表,并在其自己的锚标记中呈现每个字符串,以便它们出现在逗号分隔列表中。我将生成的标记分配给span的内部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>

我遇到的问题是任何生成的锚点都不会导致我的点击事件触发:

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

我注意到如果我在该div中硬编码类似的锚点,那么click事件就会触发。出于某种原因,我以编程方式添加的内容不会导致单击事件触发。

有谁看到我在这里做错了什么?

感谢您的帮助,

2 个答案:

答案 0 :(得分:3)

使用live()而不是click():

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

答案 1 :(得分:2)

尝试使用$("a.sr").live('click', function() {//...});