事件自动触发
trigger()和triggerHandler()
- trigger()
$(".father").click(function () {
alert("father");
});
$(".son").click(function () {
alert("son");
});
$(".son").trigger("click"); // son father
- triggerHandler()
$(".father").click(function () {
alert("father");
});
$(".son").click(function () {
alert("son");
});
$(".son").triggerHandler("click"); // son
- **trigger()和triggerHandler()的区别
- trigger()会触发事件冒泡和默认行为
- triggerHandler()不会触发事件冒泡,也不会触发默认行为
- 注意点:
trigger要想触发a标签的默认行为,需要在a标签中包有span或其它标签
$("span").click(function () {
alert("a");
});
$("span").trigger("click");
<a href="http://www.baidu.com"><span>我是百度</span></a>
jQuery自定义事件
想要自定义事件,必须满足两个条件
- 事件必须通过on绑定
- 事件必须通过trigger或者triggerHandler来触发
$(".son").on("myClick", function () {
alert("son");
});
$("son").trigger("myClick");
jQuery事件命名空间
想要事件的命名空间有效,必须满足两个条件
- 事件是通过on来绑定的
- 通过trigger或triggerHandler触发事件
$(".son").on("click.name1", function() {
alert("click1");
});
$(".son").on("click.name2", function() {
alert("click2");
});
$(".son").trigger("click.name2"); // click2
- 利用trigger触发了子元素带命名空间的事件,那么父元素带相同命名空间的事件也会被触发。
- 利用trigger触发了元素不带命名空间的事件,那么子元素所有相同类型的事件和父元素所有相同类型的事件(不管命名空间是否相同),都会被触发
$(".son").on("click.name1", function() {
alert("click1");
});
$(".son").on("click.name1", function() {
alert("click2");
});
$(".son").trigger("click.name1"); // click1 click2
网友评论