事件绑定之.bind()
.bind(eventType[,eventData],handler(eventObject))
描述:为一个元素绑定一个事件处理程序,bind()绑定方法的时候元素必须已经存在。
-eventType
string类型
一个包含一个或多个DOM事件类型的字符串,或自定义事件。多个由空格分开。
-eventData
Object类型
一个对象,它包含的数据键值对映射将被传递给事件处理程序。不常用
-handler(eventObject)
Function()类型
每当事件触发时执行的函数。
-从jq1.7开始.on()方法将事件处理程序绑定到文档的首选方法,对于更为灵活的事件绑定,可以查看.on() 或者 .delegate()事件代理。
-eventType任何字符串是合法的,如果该字符串不是一个原生的DOM事件名称,那么以自定义方式绑定处理函数,这些事件不会被浏览器调用,可以用.trigger()或.triggerHandler()来触发。
$("input").bind("custom",function(){//custom为自定义事件
$(this).val('呀改变了呢');
});
$("button").click(function(){
$("input").trigger("custom");
})
-如果eventType参数字符串包含一个点(.)字符,那么该事件是带命名空间的。这个.字符将事件及命名空间分隔开来
-其实blur, focus, focusin, focusout, load, resize, scroll, unload, click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, error这些是.bind(eventType)标准的事件类型绑定快捷方法。
-传递一个事件类型/处理函数的数据键值对映射来绑定多个事件处理程序,例如:
$("button").bind({
click:function(){
alert("click")
},
mouseenter:function(){
alert("mouseenter")
}
})
-从一个处理函数返回false等效于同时调用事件对象中的.preventDefault()和.stopPropagation()。
$("button").bind({
click:function(event){
alert('The mouse cursor is at ('+event.pageX ','+event.pageY+')');
return false;//如果没有这句话,那么body的click事件也会执行。
}
});
$("body").click(function(){
alert("body被点击了")
})
-eventData
一个方便的使用这个参数来解决由于闭包造成的问题。例如,假设我们有两个事件处理函数都引用了相同的外部变量:
var message = 'Spoon!';
$('#foo').bind('click', function() {
alert(message);
});
message = 'Not in the face!';
$('#bar').bind('click', function() {
alert(message);
});
由于两个事件处理函数的闭包中,都引用了 message,所以,当事件被触发时,这两个事件处理都会显示 Not in the face!,了避免这个问题,可以使用 eventData 来传递信息
var message = 'Spoon!';
$('#foo').bind('click', {msg: message}, function(event) {
alert(event.data.msg);
});
message = 'Not in the face!';
$('#bar').bind('click', {msg: message}, function(event) {
alert(event.data.msg);
});
所以就可以在事件绑定的时候进行赋值操作。 第一个处理程序,现在将显示Spoon!而第二个会提醒Not in the face!
如果通过.trigger()的第二个参数像事件处理程序传递参数,是在事件发生的时候传入,而传入到 .bind() 中的 eventData 参数要求在进行事件绑定时就要事先计算好。
$('#foo').on('custom', function(event, param1, param2) {//event是默认参数 alert(param1 + "\n" + param2);});-Example
在事件处理之前,传入一些额外的数据
function handler(event) {
alert(event.data.foo);
}
$("p").bind("click", {foo: "bar"}, handler)
取消默认事件并阻止冒泡
$("form").bind("submit", function() { return false; })
通过使用 .preventDefault() 方法,仅取消默认的动作,只取消默认事件
$("form").bind("submit", function(event) {
event.preventDefault();
});
通过使用 .stopPropagation() 方法,防止事件冒泡,但是默认执行默认的动作
$("form").bind("submit", function(event) {
event.stopPropagation();
});
事件绑定之.bind()的更多相关文章
- jQuery中事件绑定到bind、live、delegate、on方法的探究
1. 给页面上的某个元素绑定事件,最初采用下面的方式实现: $(‘selector’).click(function(){ //code }); 缺点: 不能同时绑定多个事件,不能绑定动态的元素. 后 ...
- jQuery三种事件绑定方式.bind(),.live(),.delegate()
.bind(), .live(), 和 .delegate()之间的区别并不明显.但是理解它们的不同之处有助于写出更简洁的代码,并防止我们的交互程序中出现没有预料到的bug. 基础 DOM树 首先,图 ...
- jQuery事件绑定方法bind、 live、delegate和on的区别
我们试图绑定一些事件到DOM元素上的时候,我相信上面这4个方法是最常用的.而它们之间到底有什么不同呢?在什么场合下用什么方法是最有效的呢? 1.准备知识 当我们在开始的时候,有些知识是必须具备的: 1 ...
- JQuery事件绑定,bind与on区别
jquery事件绑定bind:向匹配元素添加一个或多个事件处理器 $(selector).bind("click",data,function); live:向当前或未来的匹配元素 ...
- jquery 事件委托三种事件绑定方式.bind(),.live(),.delegate()
http://www.ituring.com.cn/article/467# http://www.cnblogs.com/lvdabao/archive/2013/08/30/3290603.htm ...
- jQuery的三种bind/One/Live/On事件绑定使用方法
本篇文章介绍了,关于jQuery新的事件绑定机制on()的使用技巧.需要的朋友参考下 今天浏览jQuery的deprecated列表,发现live()和die()在里面了,赶紧看了一下,发现从jQ ...
- jQuery_02之元素操作及事件绑定
1.操作元素之属性: ①attr读:$("selector").attr("属性名"):=>getAttribute("属性名"):改 ...
- jQuery之元素操作及事件绑定
1.操作元素之属性: ①attr读:("selector").attr("属性名"):=>getAttribute("属性名"):改: ...
- jquery的链式操作以及事件绑定
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
随机推荐
- UVA 1395 Slim Span
题意: 要求的是所有生成树中最大边与最小边差值最小的那个. 分析: 其实可以利用最小瓶颈生成树,就是最小生成树这一性质,枚举原图的最小边,然后找相应生成树的最大边 代码: #include <i ...
- Linux 08
1按照视频里提出的几点要求完善使ls命令模仿windows下dir命令输出的脚本 {printf $6" "$7" \t";if (substr($1,1,1) ...
- c++对文件操作的支持(二)
#include <stdio.h> #include <iostream> #include <fstream> using namespace std; voi ...
- 如何创建javascript只读变量
最近学习了一下ES标准,发现其实有很多直接间接的方法实现一个只读变量,这里总结一下. 1.最直接的是利用对象属性的特性来实现: var obj = {pro1:1}; Object.definePro ...
- zrender源码分析1:总体结构
开始 zrender(Zlevel Render) 是一个轻量级的Canvas类库,这里是GitHub的网址 点我, 类似的类库有Kinetic.JS.EaselJS. 但貌似都没有zrender好用 ...
- 线程-run和start
import java.lang.Thread; class Machine extends Thread{ public void run() { int a ; for( a = 0 ; a &l ...
- Flink Program Guide (3) -- Event Time (DataStream API编程指导 -- For Java)
Event Time 本文翻译自DataStream API Docs v1.2的Event Time ------------------------------------------------ ...
- Python 提示 no module named win32api
Windows下运行Python程序 提示错误 说是没有win32api的模块 解决办法 : 安装pywin32对应于Python的版本 可从https://sourceforge.net/pro ...
- SQL顺序列找出断号
select id from info id-----------123567810111215 (11 行受影响) 方法一: select (select max(id)+1 from Info w ...
- rpm安装软件(需管理员权限)
常用命名规范 linux-1.2.0-30.e16.i686.rpm rpm基本命令 安装rpm -i software.rpm 卸载rpm -e software 升级rpm -U software ...