麻烦与跨度内的添加跨度交互 - jQuery

时间:2011-06-24 23:14:38

标签: jquery click html

这里的第一个问题!我正在尝试创建一个邮件系统,现在正在设置接收器列表。我将用户的名称添加到范围,并希望通过单击名称来删除用户。

<span id="to"></span>

我的剧本:

$("#auto").autocomplete($("#base_uri").val()+'search',{
        req_type: "POST",
        minChars: 1,
        delay: 200
        }).result(function(event, data, formatted) {
                if($("#to").html() == ''){
                    $("#to").prepend('<span id="'+data[1]+'">'+formatted+'</span>');
                }
                else {
                    $("#to").prepend('<span id="'+data[1]+'">'+formatted+', '+'</span>');
                }
                $("#fake_to").val($("#fake_to").val()+ data[1] +', ');
                $("#auto").val('');
        });

$("#to span").click(function(){
        $(this).hide();
    });

data [1]并格式化为包含名称的字符串。

我认为这种方法会添加可以通过单击隐藏的跨距。不知何故情况并非如此。单击添加范围中的文本时不会隐藏..

非常感谢帮助! =)

2 个答案:

答案 0 :(得分:2)

这应该有效:

$("#to").delegate('span', 'click', function() {
   $(this).hide();
});

我建议使用.delegate()而不是.live(),因为您可以指定侦听事件附加到的上下文,其中.live()将事件附加到文档本身。

答案 1 :(得分:0)

您需要更改:

$("#to span").click(function(){
        $(this).hide();
    });

到:

$("#to span").live('click',function(){
        $(this).hide();
    });

.click绑定仅绑定执行代码时存在的跨度。 .live也适用于将来创建的任何实例。