使用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');