在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();
});