请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于 .triggerHandler()

w3c标准文档中有注明“.trigger() 会操作 jQuery 对象匹配的所有元素,而 .triggerHandler() 只影响第一个匹配元素。”而page1页面有两个class为component的元素,说明该方法只对第一个元素起作用。如何解释?

正在回答 回答被采纳积分+3

插入代码

1回答

Lyn 2016-06-13 10:41:39

你这个摘出来的话理解应该是不太正确的。以下是 http://www.w3school.com.cn/jquery/event_triggerhandler.asp 中的部分原文

1
2
// triggerHandler() 方法触发被选元素的指定事件类型。但不会执行浏览器默认动作,也不会产生事件冒泡。
// triggerHandler() 方法与 trigger() 方法类似。不同的是它不会触发事件(比如表单提交)的默认行为,而且只影响第一个匹配元素。

按这个理解,如果DOM结构是(如果要测试代码,注意 引入 jquery.js 文件)

1
2
3
4
5
6
7
8
9
10
<body>
<div class="parent">
    <div class="child"></div>
    <div class="child"></div>
</div>
</body>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
    $('div,body').on('click',function(){ console.log(this,'我被触发了')});
</script>

测试代码是:

1
2
3
4
5
6
7
8
9
10
11
$('div').trigger('click'); // 所有 div 都被触发了,并且 body 也会有 click 事件,最终返回 所有匹配的元素[ DIV.parent , DIV.child , DIV.child ]
// - DIV.parent 被触发
// - - BODY 被触发
//
// - DIV.child[0] 被触发
// - - DIV.parent 被触发
// - - - BODY 被触发
//
// - DIV.child[1] 被触发
// - - DIV.parent 被触发
// - - - BODY 被触发

代码是:

1
2
$('div').triggerHandler('click'); // 第一个DIV.parent 被触发了,返回 undefined
// 没有然后了,这个东西不向上传播,不会去触发 body 的 click 事件


0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号