trigger(type,[data]) ,其中参数data为可选项,以数组的形式传递。
1.直接用来触发浏览器默认操作比如,click,change等事件。
jQuery('#btn').trigger('click');
2.在使用trigger后,如果要执行回调函数,可以使用data来实现回调执行。
<script>
$(function(){
$('#btn').bind("clickMe",function(event,msg1,msg2){
$("#msg").text(msg1+' '+msg2)
})
$('#btn').trigger("clickMe",["hello","jquery"])
})
</script>
3.trigger()方法触发事件后,会执行浏览器默认操作。这个对于自己绑定的事件方法也会继续执行,ex:
//$('#select').trigger('change');
$('#select').on('change',function(){
window.locatin.reload();
})
//$('#select').trigger('change');
这里有有个顺序问题,第一个trigger运行的时候,不会加载reload,它只会加载浏览器默认的select事件。而第二就会加载自己写的reload事件。如果没有弄清楚这个问题,很容易造成误解,为什么我定义了trigger事件,为什么触发不了。
4.trigger的加载也会出现冒泡问题。原因在jQuery1.3中新定义了一些内容。(所有的触发事件都会冒泡到DOM树上)。举例来说,如果你在一个段落上触发一个事件,他首先会在这个元素上触发,其次到父元素,再到父元素的父元素,知道触发到document对象。你可以用stopPropagation()来阻止冒泡,或者简单点,直接在处理函数中返回 false即可。(return false 很实用)