Javascript 将jquery筛选器绑定到不存在的元素
是否可以将jqueryJavascript 将jquery筛选器绑定到不存在的元素,javascript,jquery,Javascript,Jquery,是否可以将jqueryfilter方法绑定到尚不存在的元素?我有一个在页面加载之前没有构建的表,还有一个应该过滤掉行的表行搜索。因为表行也可以添加和删除,所以我需要能够预绑定方法处理程序。范例 class ElementSearch { constructor($input, $elementClass){ let self = this; this.$input = $input; this.$elementClass = $eleme
filter
方法绑定到尚不存在的元素?我有一个在页面加载之前没有构建的表,还有一个应该过滤掉行的表行搜索。因为表行也可以添加和删除,所以我需要能够预绑定方法处理程序。范例
class ElementSearch {
constructor($input, $elementClass){
let self = this;
this.$input = $input;
this.$elementClass = $elementClass;
this.$input.on('input', function(){
self.filterElements($(this).val());
});
return this;
}
/**
* Hide or show elements according to the search string
* @param {string} search
* @return ElementSearch
*/
filterElements(search){
search = search.toLowerCase();
let self = this;
this.$elementClass.filter(function(){
let $this = $(this);
if($this.text().toLowerCase().indexOf(search) > -1){
$this.fadeIn();
}
else {
$this.fadeOut();
}
});
return this;
}
}
在我的App
中,我甚至在定义或构建表之前创建ElementSearch
。所以我试试这个
this.elementSearch=newelementsearch($input,$('body table tbody tr')代码>
希望它能对所有tr
元素调用filter
,即使它们还不存在。这不起作用(This.$elementsClass
length=0),但是如果在构建表之后设置它,它就起作用了
有什么方法可以做到这一点吗?您想探索事件委派
这是将事件处理程序附加到静态父元素的地方。当一个事件冒泡到静态父元素时,处理程序将检查它是否发生在目标子元素上,如果为true,则激发
从您的代码示例中很难看出这一点,因为我看不到html的结构。但使用委托可以保证动态元素由事件绑定不是“活动”的事件处理。过滤器,不是,因为它不是事件。但是,您可以委托导致过滤器发生的事件。我认为大约有50篇关于jquery动态元素事件处理程序的堆栈溢出帖子。你确定你搜索了它,但没有找到它吗?是的,谢谢@Sagivb.g,但这不是一个jquery事件。HTML结构将生成一个表..
但是该表甚至还不存在。您可以将该表包装在div中,或者将事件处理程序应用于某个静态父级。理论上,它可以是body标签(最好尽可能靠近目标元素)。事件从单击的任何目标元素一直冒泡到根元素。