我有(大多数<select>
)元素正在动态添加到文档中。为确保所有元素(即使将来会添加的元素)都绑定了click
和change
个事件处理程序,我使用$(document).on
方法:
$(document).on('click', '.cfield_fieldtype', function(){
// do something...
});
$(document).on('change', '.cfield_fieldtype', function(){
// do some other stuff...
});
在函数调用的某个时刻,我想重置我的<select>
元素,因此将每个元素的第一个<option>
设置为selected
。但是当发生这种情况时,我想以编程方式触发click
和change
事件,就好像它是由用户交互完成的一样。
如果我将第一个选项设置为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');
});
那我怎么能触发这些事件?
答案 0 :(得分:0)
使用.click()
和.change()
:
$(this).click();
$(this).change();
或.trigger()
以及事件:
$(this).trigger('click');
$(this).trigger('change');
答案 1 :(得分:0)
您可以使用trigger()方法来传播事件(因为您委派了事件):
$(this).trigger('click');
$(this).trigger('change');