使用jQuery以编程方式触发元素上的事件

时间:2015-01-30 12:39:01

标签: jquery events eventtrigger

我有(大多数<select>)元素正在动态添加到文档中。为确保所有元素(即使将来会添加的元素)都绑定了clickchange个事件处理程序,我使用$(document).on方法:

$(document).on('click', '.cfield_fieldtype', function(){
     // do something... 
});

$(document).on('change', '.cfield_fieldtype', function(){
    // do some other stuff... 
});

在函数调用的某个时刻,我想重置我的<select>元素,因此将每个元素的第一个<option>设置为selected。但是当发生这种情况时,我想以编程方式触发clickchange事件,就好像它是由用户交互完成的一样。 如果我将第一个选项设置为selected,那么当然不会触发click事件,但它也不会触发change事件。当我试图在元素上发布这些事件时,他们不会做出反应而什么也不做。这是代码:

$("#cfield_panel\\["+unique+"\\] select").each(function(){
    name = $(this).attr('name');
    $(this).val($("[name='"+name+"'] option:first").val());
    $(this).triggerHandler('click');
    $(this).triggerHandler('change');
});

那我怎么能触发这些事件?

2 个答案:

答案 0 :(得分:0)

使用.click().change()

$(this).click();
$(this).change();

.trigger()以及事件:

$(this).trigger('click');
$(this).trigger('change');

答案 1 :(得分:0)

您可以使用trigger()方法来传播事件(因为您委派了事件):

$(this).trigger('click');
$(this).trigger('change');