Javascript ES6类内的jQuery触发器不工作

Javascript ES6类内的jQuery触发器不工作,javascript,jquery,webpack,ecmascript-6,Javascript,Jquery,Webpack,Ecmascript 6,我正在ES6类中努力使用jQuery触发器。我不明白为什么这个触发器不起作用 这是我的课。触发器应该在调用triggerFilter方法时执行 //供应商导入 从“jquery”导入美元; 导出默认类排序栏{ 构造函数(){ this.element='[data sortingBar]'; this.sortOption=$(this.element).find('.sorting-bar__项'); this.sortType=''; this.sortTypeInput=$(this.e

我正在ES6类中努力使用jQuery触发器。我不明白为什么这个触发器不起作用

这是我的课。触发器应该在调用triggerFilter方法时执行

//供应商导入
从“jquery”导入美元;
导出默认类排序栏{
构造函数(){
this.element='[data sortingBar]';
this.sortOption=$(this.element).find('.sorting-bar__项');
this.sortType='';
this.sortTypeInput=$(this.element).find('[name=“sortType”]');
this.init();
}
init(){
//提前退出
if($(this.element).length==0){
返回false;
}
//单击排序选项时触发过滤器
此.sortOption.on('click',(e)=>{
此.triggerFilter(例如currentTarget);
});
}
触发过滤器(元件){
//避免激活排序选项的筛选器触发器
if($(element).hasClass('active')){
返回false;
}
//设置隐藏输入的排序选项值
此._设置端口类型输入值(元素);
//触发过滤器更换
this.sortTypeInput.trigger('change');
}
_getSortType(元素){
this.sortType=$(element).data('sort-type');
返回this.sortType;
}
_setSortTypeInputValue(元素){
this.sortTypeInput.val(this._getSortType(元素));
}

}
我通过将jQuery触发器更改为本机Javascript解决了这个问题

发件人:

this.sortTypeInput.trigger('change')

致:

const event=新事件('change');
document.getElementById('sortType').dispatchEvent(事件)


我不知道为什么jQuery触发器不能正常工作。

我通过将jQuery触发器更改为本机Javascript解决了这个问题

发件人:

this.sortTypeInput.trigger('change')

致:

const event=新事件('change');
document.getElementById('sortType').dispatchEvent(事件)


我不知道为什么jQuery触发器不能正常工作。

根据评论,问题是使用了两个jQuery实例

jquery213025834388266846541
告诉您jQuery版本
2.3.1
(整数的前三位数字,其他数字是实例的唯一id)用于注册事件侦听器

import$from'jquery'
最可能包括节点模块版本(
3.2.1

jQuery中的事件触发不使用本机事件,而是使用自己的事件处理。您只能侦听由用于注册偶数侦听器的jQuery实例触发的事件(即使它是相同的jQuery版本),因此必须确保只使用一个jQuery实例


这不仅适用于事件处理,也适用于
.data()
,因为jQuery的每个实例都为数据甚至侦听器创建了自己的独立存储。这不仅会导致与给定问题类似的问题,还会导致内存泄漏。

根据注释,问题在于使用了两个jQuery实例

jquery213025834388266846541
告诉您jQuery版本
2.3.1
(整数的前三位数字,其他数字是实例的唯一id)用于注册事件侦听器

import$from'jquery'
最可能包括节点模块版本(
3.2.1

jQuery中的事件触发不使用本机事件,而是使用自己的事件处理。您只能侦听由用于注册偶数侦听器的jQuery实例触发的事件(即使它是相同的jQuery版本),因此必须确保只使用一个jQuery实例


这不仅适用于事件处理,也适用于
.data()
,因为jQuery的每个实例都为数据甚至侦听器创建了自己的独立存储。这不仅会导致与给定问题类似的问题,还会导致内存泄漏。

No在es6类中jQuery和
trigger
没有问题。这对您不起作用的原因可能有很多。您是否已验证调用了
triggerFilter
?在调用
this.sortTypeInput.trigger('change')
之前,是否确定
this.sortTypeInput.length
不是
0
?是的,调用了
triggerFilter
,并且
this.sortTypeInput.length
1
。其他一切都适用于隐藏的输入。例如
this.sortTypeInput.remove()那么问题可能是侦听该
更改
事件的侦听器。请执行以下测试。添加一个
console.dir(this.sortTypeInput[0])
就在this.sortTypeInput.trigger('change')之前或之后
。然后打开浏览器的开发人员工具,执行该代码并查看记录的DOM元素的属性。在属性列表的底部,您应该至少在条目上看到
jQuery[一个很长的数字]:1
您在这些条目中看到了一个还是两个?我猜出于某种原因,有多个jQuery版本/实例处于活动状态。如果您的浏览器支持它,您可以在es6类中编写
console.dir(Object.getOwnPropertyNames(this.sortTypeInput[0])
No jQuery和
trigger
。这对您不起作用的原因可能有很多。您是否已验证调用了
triggerFilter
?在调用
this.sortTypeInput.trigger('change')
之前,是否确定
this.sortTypeInput.length
不是
0
?是的,调用了
triggerFilter
,并且
this.sortTypeInput.length
1
。其他一切都适用于隐藏的输入。例如
this.so