事件绑定之.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 1617 Laptop
题意: 有n条长度为1的线段,确定他们的起点,必须是整数,使得第i条线段在[ri,di]之间.最后输出空隙的最小值 分析: 原始数据排序,排序的规则是先按照右端点排序,右端点相同的情况下,再按照左端点 ...
- (七)Android中AIDL的应用与理解
一.跨应用启动Service Intent serviceIntent=new Intent();serviceIntent.setComponent(new ComponentName(" ...
- C# 10 总复习
数据类型--变量与常量--运算符与表达式--语句(if,for)--数组--函数--结构体 一.数据类型: (一)内建类型 整型(int short long byte uint ushort ulo ...
- Inno Setup打包的程序提升为管理员权限
Inno Setup打包的程序在Win7 64位系统上安装,安装步骤最后一步若选中运行程序,会跳出一个错误提示框. 这是因为64位win7系统运行程序时需要管理员权限,而打包的文件并没有这个权限就试图 ...
- [Oracle]日期和毫秒转换(Date->int)
--日期转换毫秒 SELECT TO_NUMBER(TO_DATE('2005-03-29 12:30:45', 'YYYY-MM-DD HH24:MI:SS') - TO_DATE('1970- ...
- Python爬虫实战(2):爬取京东商品列表
1,引言 在上一篇<Python爬虫实战:爬取Drupal论坛帖子列表>,爬取了一个用Drupal做的论坛,是静态页面,抓取比较容易,即使直接解析html源文件都可以抓取到需要的内容.相反 ...
- jupyter巨好玩-简介与安装
ipython notebook改名jupyter了而且更好玩更好用 jupyter简介 jupyter是啥啊? 这个要从ipython说起,ipython是个交互式的python的解释器,自带颜色, ...
- skynet配置文件
启动skynet需要一个配置文件 我们看下examples/config root = "./" 表示根目录是skynet启动时的目录thread = 8 ...
- JDK常见问题 环境变量配置
"javac不是内部命令或外部命令" Windows7 安装"jdk-6u26-windows-x64.exe"后,常提示"javac不是内部命令或外 ...
- JVM内存分配和回收
本文内容来自<Java编程思想(第四版)>第二章<一切都是对象>和第五章<初始化与清理>.作为一个使用了好几年的Javaer,再次看编程思想的前面章节(不要问我为什 ...