指的是父元素绑定到子元素上(如何表达还真不知道),代码如下:
$(parentElement).on("click",childrenElement,function(){
//do something here
});
现在我想把autocomplete也做这样的绑定,问题是autocomplete是要设定数据源等等,如何处理呢?
$(parentElement).on("click",childrenElement,function(){ var $self=$(this);//缓存子元素 if($self.data('autocomplete')!='true'){ $self.autocomplete({//大概这样 }); } }); 我觉得吧,你是想给动态元素增加自动完成功能; 一般的做法是:添加动态元素后,调用一次注册,而不是采用事件冒泡的方式。
是给动态元素绑定自动完成功能。我在书上看到不能每个都绑定,那样效率太低了。
@happydaily: 你这做法要冒泡那么多层。单个绑定效率并不低。
$(function() { var availableTags = ["123","456"]; $( "#tags" ).autocomplete({ source: availableTags }); }
availableTags的获取方法 要参考你的需求
不是这个,这个我会,注意看我的示范代码,如果把click换成autocomplete,Source如何赋值呢?
@happydaily: 我觉着差不多啊
$(parentElement).on("autocomplete",function(event, mySource){
//do something here
source: mySource
});
@小欢乐: {
source: availableTags
}
这是传的个对象,
function(event, mySource){
//do something here
source: mySource
});
这个source传给谁啊?
可以试试把autocomplete封装在一个javascript函数中,然后click的时候调用看看
好奇怪的想法。
$(parentElement).on("click",childrenElement,function(){
//do something here
});
这句话是注册事件,当点击事件发生时,会执行那个函数。再来看:
$( "#tags" ).autocomplete({ source: availableTags });
这句话是使得#tags元素具有自动补全的能力,它本身又不是一个事件,应该相当于//do something here
而我们一般都希望在页面加载的时候就让那个元素就具有补全的能力,所以可以这样写:
$(function() {
$( "#tags" ).autocomplete({ source: availableTags });
});
如果你想在其他事件发生的时候,比如点击事件,那也可以,不过有个问题就是点击事件是可能多次发生的,那么多次掉用 $( "#tags" ).autocomplete({ source: availableTags }); 可能会导致副作用
1 $("#tableCommingDeals").on("click", ".CommingSKU", function () { 2 $(this).autocomplete({ 3 minLength: 0, 4 source: projects, 5 focus: function (event, ui) { 6 $(this).val(ui.item.label); 7 return false; 8 }, 9 select: function (event, ui) { 10 $(this).val(ui.item.label); 11 return false; 12 } 13 })
完美解决