美文网首页
jQuery事件自动触发

jQuery事件自动触发

作者: David_Rao | 来源:发表于2020-02-01 11:21 被阅读0次

事件自动触发

trigger()和triggerHandler()

  1. trigger()
$(".father").click(function () {
    alert("father");
});
$(".son").click(function () {
    alert("son");
});
$(".son").trigger("click");  // son  father
  1. triggerHandler()
$(".father").click(function () {
    alert("father");
});
$(".son").click(function () {
    alert("son");
});
$(".son").triggerHandler("click");  // son
  1. **trigger()和triggerHandler()的区别
  • trigger()会触发事件冒泡和默认行为
  • triggerHandler()不会触发事件冒泡,也不会触发默认行为
  1. 注意点:
    trigger要想触发a标签的默认行为,需要在a标签中包有span或其它标签
$("span").click(function () {
    alert("a");
});
$("span").trigger("click");

<a href="http://www.baidu.com"><span>我是百度</span></a>

jQuery自定义事件

想要自定义事件,必须满足两个条件

  1. 事件必须通过on绑定
  2. 事件必须通过trigger或者triggerHandler来触发
$(".son").on("myClick", function () {
    alert("son");
});
$("son").trigger("myClick");

jQuery事件命名空间

想要事件的命名空间有效,必须满足两个条件

  1. 事件是通过on来绑定的
  2. 通过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

相关文章

网友评论

      本文标题:jQuery事件自动触发

      本文链接:https://www.haomeiwen.com/subject/nlitxhtx.html