问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

jquery的trigger和triggerHandler的区别示例介绍

发布网友 发布时间:2022-05-01 19:09

我来回答

2个回答

懂视网 时间:2022-05-14 17:30

本篇文章给大家带来的内容是关于有命名空间的事件监听器nsevent的详细介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

这个模块主要的原因是用在微信开发时候监听两个页面之间的状态交互

比如 pageA 和 pageB 两个页面, pageA 页面有收藏项 pageB 也有同样的收藏项,监听同一个事件

// 收藏事件改变
nsevent.on('collectChange', () => {
 // 刷新列表数据
})

那么在 pageA 页面操作 collect(收藏) 事件会触发自身页面 collectChange 回调,这时候nsevent就派上用场,

在 pageA 这样声明

// 收藏事件改变
nsevent.on('collectChange', () => {
 // 刷新列表数据
}, 'pageA')

在 pageB 触发 pageA 的事件,就不会触发自身页面的回调了

// 触发collectChange事件
NSEvent.emit('collectChange', params, { ns: ['pageA'] });

还可以在 pageC 触发 pageA, pageB页面的 collectChange 事件

// 触发collectChange事件
NSEvent.emit('collectChange', params, { ns: ['pageA', 'pageB'] });

nsevent document

有命名空间的事件监听器 - event emitter with namespace

安装和使用

npm i nsevent --save
const nsevent = require('nsevent');
// 浏览器
<script src="dist/nsevent.umd.js"></script>

on(eventName, fn, namespace)

参数必选说明
eventName监听事件名
fn回调函数
namespace命名空间
NSEvent.on('add', (a, b) => {
 console.log(a, b);
});

NSEvent.on('add', (a, b) => {
 console.log(a, b, 'ns');
}, 'ns');

// 1, 2
// 1, 2, 'ns'
NSEvent.emit('add', a, b);

once(eventName, fn)

参数必选说明
eventName监听事件名
fn回调函数
NSEvent.once('add', (a, b) => {
 console.log(a, b);
});

NSEvent.emit('add', 1, 2); // 1, 2
NSEvent.emit('add', 1, 2); // nothing

emit(eventName, arg1, arg2, ..., object)

参数必选说明
eventName监听事件名
arg[1,2,3...]传递给回调函数的值
object{ 最后一个传递对象,ns: ['ns'] } 可以指定命名空间触发事件
NSEvent.on('fire', () => {
 console.log('fire ns');
}, 'ns');

NSEvent.on('fire', () => {
 console.log('fire ns2');
}, 'ns');

NSEvent.on('fire', () => {
 console.log('fire');
});

NSEvent.emit('fire'); // fire ns, fire ns2, fire
console.log("======");
NSEvent.emit('fire', 1, 2, { ns: [] }); // nothing
NSEvent.emit('fire', 1, 2, { ns: ['ns'] }); // fire ns, fire ns2

off(eventName, [string|function|array])

参数必选说明

eventName监听事件名

stringfunctionarray解绑回调函数

string指定命名空间解绑


function指定函数解绑


array通过数组指定命名空间或者函数解绑

const NSEvent = require('../dist/nsevent.cjs');
NSEvent.on('fire', () => {
 console.log('fire ns');
}, 'ns');
NSEvent.on('fire', () => {
 console.log('fire ns');
}, 'ns');
NSEvent.on('fire', () => {
 console.log('fire1');
}, 'ns1');
NSEvent.emit('fire'); // fire ns, fire ns, fire1
console.log('==========');
NSEvent.off('fire', ['ns']);
NSEvent.emit('fire'); // fire1
console.log('==========');
NSEvent.off('fire', 'ns1');
NSEvent.emit('fire'); // none

热心网友 时间:2022-05-14 14:38

返回值:jQuerytriggerHandler(type, [data])

概述

这个特别的方法将会触发指定的事件类型上所有绑定的处理函数。但不会执行浏览器默认动作,也不会产生事件冒泡。

这个方法的行为表现与trigger类似,但有以下三个主要区别:

* 第一,他不会触发浏览器默认事件。

* 第二,只触发jQuery对象集合中第一个元素的事件处理函数。

* 第三,这个方法的返回的是事件处理函数的返回值,而不是据有可链性的jQuery对象。此外,如果最开始的jQuery对象集合为空,则这个方法返回
undefined 。

参数

typeString

要触发的事件类型

data (可选)Array

(可选)传递给事件处理函数的附加参数

示例

描述:

如果你对一个focus事件执行了 .triggerHandler() ,浏览器默认动作将不会被触发,只会触发你绑定的动作。

HTML 代码:
<button id="old">.trigger("focus")</button>
<button id="new">.triggerHandler("focus")</button><br/><br/>
<input type="text" value="To Be Focused"/>

jQuery 代码:
$("#old").click(function(){
$("input").trigger("focus");
});
$("#new").click(function(){
$("input").triggerHandler("focus");
});
$("input").focus(function(){
$("<span>Focused!</span>").appendTo("body").fadeOut(1000);
});

返回值:jQuerytrigger(type, [data])

概述

在每一个匹配的元素上触发某类事件。

这个函数也会导致浏览器同名的默认行为的执行。比如,如果用trigger()触发一个'submit',则同样会导致浏览器提交表单。如果要阻止这种默认行为,应返回false。

你也可以触发由bind()注册的自定义事件而不限于浏览器默认事件。

事件处理函数会收到一个修复的(规范化的)事件对象,但这个对象没有特定浏览器才有的属性,比如keyCode。

jQuery也支持 命名空间事件。这允许你触发或者解除绑定一组特定的事件处理函数,而无需一一个指定。你可以在事件类型后面加上感叹号
! 来只触发那些没有命名空间的事件处理函数。

jQuery 1.3中新增:

所有触发的事件现在会冒泡到DOM树上了。举例来说,如果你在一个段落p上触发一个事件,他首先会在这个元素上触发,其次到父元素,在到父元素的父元素,直到触发到document对象。这个事件对象有一个
.target 属性指向最开始触发这个事件的元素。你可以用 stopPropagation() 来阻止事件冒泡,或者在事件处理函数中返回false即可。

事件对象构造器现在已经公开,并且你可以自行创建一个事件对象。这个事件对象可以直接传递给trigger所触发的事件处理函数。事件对象的完整属性列表可以在
jQuery.Event 的文档里找到。

你可以有三种方式指定事件类型:

* 你可以传递字符串型的事件名称(type参数)。

* 你可以使用jQuery.Event对象。可以将数据放进这个对象,并且这个对象可以被触发的事件处理函数获取到。

* 最后,你可以传递一个带有数据的字面量对象。他将被复制到真正的jQuery.Event对象上去。
注意在这种情况下你必须指定一个 type 属性。

参数

typeString,Event,Object

一个事件对象或者要触发的事件类型

data (可选)Array

(可选)传递给事件处理函数的附加参数

示例

描述:

提交第一个表单,但不用submit()

jQuery 代码:
$("form:first").trigger("submit")

描述:

给一个事件传递参数

jQuery 代码:
$("p").click( function (event, a, b) {
// 一个普通的点击事件时,a和b是undefined类型
// 如果用下面的语句触发,那么a指向"foo",而b指向"bar"
} ).trigger("click", ["foo", "bar"]);

描述:

下面的代码可以显示一个"Hello World"

jQuery 代码:
$("p").bind("myEvent", function (event, message1, message2) {
alert(message1 + ' ' + message2);
});
$("p").trigger("myEvent", ["Hello","World!"]);
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
这是个成本会计题,马上要考这道原题了,求大虾帮忙 财务管理类问题,求大虾帮忙,小弟感激不尽。具体问题看问题补充。_百度... 光影魔术手怎么换底色 光影魔术手换底色教程 ...米的绳子围绕一棵树干饶了6圈,还余下1.16米,这棵树干上的直径大约是... ...还余下1.16米,这棵树的树干的直径大约是多少米?求算式! ibm x3500 M5 服务器 运行时风扇声音好大,吵死了,可以下掉一个吗... IBMX3500 M5,最近老是出现自动关机的情况,需要把服务器电源拔掉半分钟... 治疗萎缩性胃炎的方法 怎么治萎缩胃炎 JYF-40FS06电饭煲190块买的是假的吗 存储过程和触发器的区别和联系。 animator controller中参数类型bool和trigger的区别是什么?分别在何种情况下使用 Jquery中trigger和triggerHandler的区别 雨润集团的监理工程师的岗位职责是什么(事干什么的)? 什么是碰撞器?什么是触发器?说说碰撞器和触发器的相同和不同之处。 高中英语作文:用高级词汇代替以前的低级词汇,越多越好,多的加分 英语周报高二新课程第47期总第3275期 翻译成英文:是什么原因引发了灾难? 属于安全监理工程师的工作职责有 办社保卡多久能拿到卡 trigger能不能当名词当作 诱因cause 同义用 ? 比喻句,像什么一样,像什么。怎么写? spark和trigger都有“引发、激发”的意思,有什么区别吗?可以同等替换吗? 工程质量返修阶段安全监理工程师还负责监管吗 用java实现批量执行SQL语句,抛出异常后如何使程序继续执行不停止? 把什么当作什么写一个比喻句? 比喻句怎么写? 微信发过来的电脑软件怎么下载 夫妻俩个可以有几套房子啊 杭州代持买房有人连中两套赚4800万,代持买房有风险吗? 百龙天梯有多高?现在百龙天梯还是世界第一梯吗? 张家界百龙天梯是梯子吗? 如何让电脑光纤音频输出改变为始终是DD或DTS或AC3?现在始终被外置解码器识别为PCM 办公室里整天都听到同事们嚷嚷着用鼠标太久手痛啊,听说垂直鼠标可以预防鼠标手,是真的吗? 谁有PCM MEDIASUBTYPE_PCM解码器 珠穆朗玛峰的中国梯,已存在33年,是谁带上去的? 用作HiFi解码器usb口芯片的dac pcm2704会*住后面比它更好的es9023的解码吗 世界上走最高悬梯是几米 高层要是着火了 云梯高度是多少 梦幻西游,5J残卷,和8J残卷多少钱 请问各位谁知道张家界百龙天梯世界第一梯的称号是怎么来的?有人知道吗? 梦幻西游残卷翰墨值多少钱 简述幼儿园日常交接班的要求 世界上最惊险刺激的楼梯,恐高症的人都望而兴叹,它究竟在哪里? 梦幻西游翰墨残卷填空怎么填 幼儿园班级教师交接班时应处理好哪些方面的工作? 世界第一高楼迪拜塔里的电梯是什么牌子的? 梦幻西游残卷9J值多少钱(无量寿经) 鼠标手怎么破解? 幼儿园交接班特别关注的交接内容有哪些?