jQuery高级事件

学习要点:

  • 1.模拟操作
  • 2.命名空间
  • 3.事件委托 on、off和one

一、模拟操作

1.trigger 方法

<div style="width:200px;height:200px;background:red;">
    <input type="button" value="点击"/>
</div>

$("input").click(function () {
    console.log($(this).val());
});

自动触发点击事件

$("input").trigger("click");

简写

$("input").click(function () {
    console.log($(this).val());
}).trigger("click");

传递参数

$("input").click(function (e, data1, data2) {
    console.log(data1[‘name‘] + ", " + data2[1]);
}).trigger("click", [{"name" : "zhang", "age" : 22}, ["lisi", 23]]);    // zhang, 23

也可以自动触发自定义事件
$(“input”).bind(“myClick”, function () {
console.log(“自定义事件”); // 自定义事件
}).trigger(“myClick”);
下面来看看简写的方法,没事偷偷懒

$("input").bind("click", function () {
    console.log("简写的模拟事件");     // 简写的模拟事件
}).click();

2.triggerHandler 方法

在大都是情况下,trigger和triggerHandler两个方法的用法类似,但是也存在差异

第一种:.triggerHandler()方法并不会触发事件的默认行为,而.trigger()会

<form action="http://www.baidu.com">
    姓名: <input type="text" name="username"/>
    <input type="submit" name="sub"/>
</form>

$("input[name=sub]").trigger("click");     // 自动跳转到指定URL
$("input[name=sub]").triggerHandler("click");

如果你希望用trigger模仿triggerHander

$("input[name=sub]").click(function (e) {
    e.preventDefault();
}).trigger("click");

第二种:.triggerHandler()方法只会影响第一个匹配到的元素,而.trigger()会影响所有

<ul>
    <li>item1</li>
    <li>item2</li>
    <li>item3</li>
</ul>

$("ul li").click(function () {
    console.log($(this).text());
});
$("ul li").trigger("click");       // 3个li都会被触发
$("ul li").triggerHandler("click");    // 只有第一个li被触发

第三种:.triggerHandler()方法会返回当前事件执行的返回值,如果没有返回值,则返回undefined
而.trigger()则返回当前包含事件触发元素的 jQuery 对象(方便链式连缀调用)

alert($(document).click(function (){
    return "aaa";       // aaa
}).triggerHandler("click"));
alert($(document).click(function (){
    return "aaa";       // [object Object]
}).trigger("click"));

第四种:.trigger()在创建事件的时候,会冒泡。但这种冒泡是自定义事件才能体现出来,是
jQuery 扩展于 DOM 的机制,并非 DOM 特性。而.triggerHandler()不会冒泡。

<div style="width: 300px; height: 300px; background: red;">
    <div style="width: 200px; height: 200px; background: green;">
        <div class="inner" style="width: 100px; height: 100px; background: blue;">inner</div>
    </div>
</div>
var index = 1;
$("div").bind("myEvent", function () {
    console.log("index = " + index++);
})
$(".inner").trigger("myEvent");        // index = 1, index = 2, index = 3
$(".inner").triggerHandler("myEvent");     // index = 1

二、命名空间

有时,我们想对事件进行移除。但对于同名同元素绑定的事件移除往往比较麻烦,

这个时候,可以使用事件的命名空间解决。

$(document).bind("click.abc", function () {
    console.log("abc");
})
$(document).bind("click.123", function () {
    console.log("123");
});
$(document).unbind("click.abc");       // 点击只是触发click.123
$(document).trigger("click.123");

三、事件委派

让子元素绑定的事件冒泡到父元素(或祖先元素)上,然后再进行相关处理即可。

由于怕造成混乱,jquery先后使用和废弃了live()、die()和delegate()、undelegate()方法

统一由on()、off()和one()来进行事件委派

<div style="background:red;width:200px;height:200px;" id="box">
    <input type="button" value="按钮" class="button" />
</div>

进行事件委派

$(".button").on("click", function () {
    $(this).clone().appendTo("#box");
});

取消事件委派

$(".button").off("click");

one 绑定元素执行完毕后自动移除事件,可以方法仅触发一次的事件

$(".button").one("click", function () {
    $(this).clone().appendTo("#box");
});
时间: 2024-10-07 05:29:52

jQuery高级事件的相关文章

jQuery 高级事件

jQuery 不但封装了大量常用的事件处理,还提供了不少高级事件方便开发者使用.比如模拟用户触发事件.事件委托事件.和统一整合的 on 和 off,以及仅执行一次的 one 方法.这些方法大大降低了开发者难度,提升了开发者的开发体验. 一.模拟操作 在事件触发的时候,有时我们需要一些模拟用户行为的操作.例如:当网页加载完毕后 自行点击一个按钮触发一个事件,而不是用户去点击 //点击按钮事件 $('input').click(function(){ alert('我的第一次点击来自模拟!'); }

jQuery 高级事件(模拟操作)

一.模拟操作 在事件触发的时候,有时我们需要一些模拟用户行为的操作.例如:当网页加载完毕后 自行点击一个按钮触发一个事件,而不是用户去点击 //点击按钮事件 $('input').click(function(){ alert('我的第一次点击来自模拟!'); }); //模拟用户点击行为 $('input').trigger('click'); //可以合并两个方法 $('input').click(function(){ alert('我的第一次点击来自模拟!'); }).trigger('

jQuery事件篇---高级事件

内容提纲: 1.模拟操作 2.命名空间 3.事件委托 4.on.off 和 one 发文不易,转载请注明出处! 一.模拟操作 在事件触发的时候,有时我们需要一些模拟用户行为的操作.例如:当网页加载完毕后自行点击一个按钮触发一个事件,而不是用户去点击. //点击按钮事件 $('input').click(function () { alert('我的第一次点击来自模拟!'); }); //模拟用户点击行为 $('input').trigger('click'); //可以合并两个方法 $('inp

高级事件(一)

jQuery不但封装了大量常用的事件处理,还提供了不少高级事件方便开发者使用.比如模拟用户触发事件.事件委托事件.和统一整合的on和off,以及仅执行一次的one方法.这些方法大大降低了开发者难度,提升了开发者的开发体验. 模拟操作 在事件触发的时候,有时我们需要一些模拟用户行为的操作.例如:当网页加载完毕后自行点击一个按钮触发一个事件,而不是用户去点击. html(部分)代码: <input type="button" value="按钮" /> jQ

jQuery基础——事件篇

jQuery基础--事件篇 鼠标事件 click与dbclick事件 click方法监听用户单击操作,dbclick监听用户双击操作,这两个方法类似. dbclick与click事件不同的是: click事件触发需要以下几点: click事件其实是由mousedown与mouseup 2个动作构成,所以点击的动作只有在松手后才触发 dblclick事件触发需要以下几点: dblclick又是由2个click叠加而来的,所以dblclick事件只有在满足以下条件的情况下才能被触发 鼠标指针在元素里

python前端jQuery高级

知识点预习1.jQuery事件冒泡2.事件委托 3.元素节点操作 4.正则表达式及表单验证实例 01- submit事件 //监听 提交的事件 $("form").submit(function (abc) { //阻止系统的默认行为 // abc.preventDefault(); return false; }) 事件冒泡的原理在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件

jquery高级编程学习

jquery高级编程 第1章.jQuery入门 类型检查 对象 类型检查表达式 String typeof object === "string" Number typeof object === "number" Boolean typeof object === "boolean" Object typeof object === "object" Element object.nodeType null object =

jQuery.load()事件使用方法详解

jQuery.load()是ajax中一种异步加载的事件,我们可以加载整个页面并且也可以带参数加载,下面我来详细介绍jQuery.load()事件用法,希望对初学者有所帮助. .load( url, [ data ], [ complete(responseText, textStatus, XMLHttpRequest) ] ) 返回: jQuery 描述: 载入远程 HTML 文件代码并插入至 DOM 中.version added: 1.0.load( url, [ data ], [ c

jQuery学习-事件之绑定事件(三)

在上一篇<jQuery学习-事件之绑定事件(二)>我们了解了jQuery的dispatch方法,今天我们来学习下handlers 方法: handlers: function( event, handlers ) {         var sel, handleObj, matches, i,             handlerQueue = [],             delegateCount = handlers.delegateCount,             cur =