使用jQuery以编程方式在元素上触发事件
我有(大部分是使用jQuery以编程方式在元素上触发事件,jquery,events,eventtrigger,Jquery,Events,Eventtrigger,我有(大部分是)元素动态添加到文档中。为了确保所有元素(即使是将来要添加的元素)都有绑定到它们的单击和更改事件处理程序,我使用$(文档)。在方法上: $(document).on('click', '.cfield_fieldtype', function(){ // do something... }); $(document).on('change', '.cfield_fieldtype', function(){ // do some other stuff...
)元素动态添加到文档中。为了确保所有元素(即使是将来要添加的元素)都有绑定到它们的单击
和更改
事件处理程序,我使用$(文档)。在
方法上:
$(document).on('click', '.cfield_fieldtype', function(){
// do something...
});
$(document).on('change', '.cfield_fieldtype', function(){
// do some other stuff...
});
在函数调用的某个时刻,我想重置我的
元素,因此将每个元素的第一个
设置为选中的。但当这种情况发生时,我希望通过编程触发单击
和更改
事件,就好像它是由用户交互完成的一样。
如果我将第一个选项设置为selected
,那当然不会触发单击
事件,但也不会触发更改
事件。当我试图在元素上触发这些事件时,它们不会做出反应,也不会做任何事情。代码如下:
$("#cfield_panel\\["+unique+"\\] select").each(function(){
name = $(this).attr('name');
$(this).val($("[name='"+name+"'] option:first").val());
$(this).triggerHandler('click');
$(this).triggerHandler('change');
});
那么如何触发这些事件呢?使用。单击()
和。更改()
:
或.trigger()
以及事件:
$(this).trigger('click');
$(this).trigger('change');
您可以使用允许事件传播的方法(因为您正在委派事件):
jQuery中没有名为.triggerHandler()
的方法@ACs:尝试将警报放在触发器语句之前,以检查代码是否正在执行。@Miland Anantwar:在触发器语句执行之前和之后都发出警报。您能用小提琴再现问题吗。请解释一下为什么这是一个好答案?请提供相关的有问题的HTML和最简单的示例复制问题
$(this).trigger('click');
$(this).trigger('change');
$(this).trigger('click');
$(this).trigger('change');