Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在span-jQuery中与add span交互时出现问题_Jquery_Click_Html - Fatal编程技术网

在span-jQuery中与add span交互时出现问题

在span-jQuery中与add span交互时出现问题,jquery,click,html,Jquery,Click,Html,第一个问题!我正在尝试创建一个邮件系统,现在正在设置收件人列表。我正在将用户的名称添加到范围中,并希望通过单击名称来删除用户 <span id="to"></span> 我的剧本: $("#auto").autocomplete($("#base_uri").val()+'search',{ req_type: "POST", minChars: 1, delay: 200 }).result(func

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

<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();
    });
$(“#auto”).autocomplete($(“#base#u uri”).val()+“search”{
请求类型:“POST”,
明查斯:1,
延误:200
}).result(函数(事件、数据、格式化){
if($(“#to”).html()=''){
$(“#to”)。前置(“”+格式化+“”);
}
否则{
$(“#to”).prepend(“+”格式化+”,“+”);
}
$(“#伪#to”).val($(#伪#to”).val()+数据[1]+,);
$(“#自动”).val(“”);
});
$(“#to span”)。单击(函数(){
$(this.hide();
});
数据[1]和格式化数据是包含名称的字符串

我认为这种方法会增加跨度,单击这些跨度可以隐藏这些跨度。但事实并非如此。单击“添加范围”中的文本时不会隐藏

非常感谢您的帮助!=)

您需要更改:

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

。单击
绑定仅绑定到执行代码时存在的范围
.live
也适用于将来创建的任何实例。

这应该可以:

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

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

-1不要使用live!为什么这是一种如此流行的技术?改为使用
delegate
$('#to').delegate('span','click',function(){$(this.hide())@Levi,live应该用来做什么?jquery声明委托是live的替代方法:
delegate是使用.live()方法的替代方法,允许将事件委托绑定到特定的DOM元素。
delegate
提供
live
上下文。在
live
中,事件在文档中弹出,而
delegate
仅在到达父选择器之前弹出,在本例中为
$('#to')
。有关这一点的原因,请参阅。@Levi-不仅如此,
.live()
中的初始选择器被执行,然后被丢弃……选择器字符串中所需的所有内容,因此它永远不是理想的解决方案……甚至是
$(document).delegate(选择器、事件、函数)优于
$(选择器).live(事件,函数)感谢您理解
直播
vs
代表
。我希望我们能够自动更正此处给出的每个答案,以便使用
live
委派
$("#to").delegate('span', 'click', function() {
   $(this).hide();
});