Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.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
Javascript 如何以编程方式替换@click事件? 标签 导出默认值{ 数据(){ ... }, 方法:{ 添加过滤器:函数(事件){ 此.refs.filters.appendChild(event.target) event.target.removeEventListener('click',this.add_filter) event.target.addEventListener('click',this.remove_filter) }, 移除过滤器:功能(事件){ 此.refs.available.appendChild(event.target) event.target.removeEventListener('单击',此.remove\u筛选器) event.target.addEventListener('click',this.add_filter) } }_Javascript_Vue.js_Vuejs2 - Fatal编程技术网

Javascript 如何以编程方式替换@click事件? 标签 导出默认值{ 数据(){ ... }, 方法:{ 添加过滤器:函数(事件){ 此.refs.filters.appendChild(event.target) event.target.removeEventListener('click',this.add_filter) event.target.addEventListener('click',this.remove_filter) }, 移除过滤器:功能(事件){ 此.refs.available.appendChild(event.target) event.target.removeEventListener('单击',此.remove\u筛选器) event.target.addEventListener('click',this.add_filter) } }

Javascript 如何以编程方式替换@click事件? 标签 导出默认值{ 数据(){ ... }, 方法:{ 添加过滤器:函数(事件){ 此.refs.filters.appendChild(event.target) event.target.removeEventListener('click',this.add_filter) event.target.addEventListener('click',this.remove_filter) }, 移除过滤器:功能(事件){ 此.refs.available.appendChild(event.target) event.target.removeEventListener('单击',此.remove\u筛选器) event.target.addEventListener('click',this.add_filter) } },javascript,vue.js,vuejs2,Javascript,Vue.js,Vuejs2,因此,在这种情况下,removeEventListener不起作用。我有什么办法可以“切换”@click事件?这里是一个单一方法的示例。它检查HTMLCollection的列表([…this.$refs.filters.children])过滤器包含基于innerText的已单击项。我添加了第二个具有相同类的元素,以显示只要文本不同,它就可以工作 newvue({ el:“应用程序”, 数据(){ 返回{} }, 方法:{ 切换过滤器:函数(事件){ if([…this.$refs.filte

因此,在这种情况下,removeEventListener不起作用。我有什么办法可以“切换”@click事件?

这里是一个单一方法的示例。它检查HTMLCollection的列表(
[…this.$refs.filters.children]
)过滤器包含基于
innerText
的已单击项。我添加了第二个具有相同类的元素,以显示只要文本不同,它就可以工作

newvue({
el:“应用程序”,
数据(){
返回{}
},
方法:{
切换过滤器:函数(事件){
if([…this.$refs.filters.children].filter(child=>child.innerText==event.target.innerText).length==0){
此.refs.filters.appendChild(event.target)
}否则{
此.refs.available.appendChild(event.target)
}
}
}
})

过滤器
可用
标签1
标签2

make/call
toggle_filter
并传递一个参数,以便您知道是否应该附加到筛选器或可用,如果我第一次使用
Label
并将范围切换到筛选器,则没有理由删除事件侦听器并重新添加一个,但当再次单击时,它不会返回可用,因为它仍然有
@单击=“切换('filters',$event)”
。如何更改第一个参数?