.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);
});
$('#foo').trigger('custom', ['Custom', 'Event']);

-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()的更多相关文章

  1. jQuery中事件绑定到bind、live、delegate、on方法的探究

    1. 给页面上的某个元素绑定事件,最初采用下面的方式实现: $(‘selector’).click(function(){ //code }); 缺点: 不能同时绑定多个事件,不能绑定动态的元素. 后 ...

  2. jQuery三种事件绑定方式.bind(),.live(),.delegate()

    .bind(), .live(), 和 .delegate()之间的区别并不明显.但是理解它们的不同之处有助于写出更简洁的代码,并防止我们的交互程序中出现没有预料到的bug. 基础 DOM树 首先,图 ...

  3. jQuery事件绑定方法bind、 live、delegate和on的区别

    我们试图绑定一些事件到DOM元素上的时候,我相信上面这4个方法是最常用的.而它们之间到底有什么不同呢?在什么场合下用什么方法是最有效的呢? 1.准备知识 当我们在开始的时候,有些知识是必须具备的: 1 ...

  4. JQuery事件绑定,bind与on区别

    jquery事件绑定bind:向匹配元素添加一个或多个事件处理器 $(selector).bind("click",data,function); live:向当前或未来的匹配元素 ...

  5. jquery 事件委托三种事件绑定方式.bind(),.live(),.delegate()

    http://www.ituring.com.cn/article/467# http://www.cnblogs.com/lvdabao/archive/2013/08/30/3290603.htm ...

  6. jQuery的三种bind/One/Live/On事件绑定使用方法

    本篇文章介绍了,关于jQuery新的事件绑定机制on()的使用技巧.需要的朋友参考下   今天浏览jQuery的deprecated列表,发现live()和die()在里面了,赶紧看了一下,发现从jQ ...

  7. jQuery_02之元素操作及事件绑定

    1.操作元素之属性: ①attr读:$("selector").attr("属性名"):=>getAttribute("属性名"):改 ...

  8. jQuery之元素操作及事件绑定

    1.操作元素之属性: ①attr读:("selector").attr("属性名"):=>getAttribute("属性名"):改: ...

  9. jquery的链式操作以及事件绑定

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

随机推荐

  1. HTTP概念进阶

    1.什么是回调? 在Java中,就是类A调用类B中的某个方法b,然后类B又在某个时候反过来调用类A中的某个方法a,对于A来说,这个a方法便叫做回调方法 pubilc interface CallBac ...

  2. 通过WebService跨平台上传大文件到服务器

    好长时间没写博客了,对最近工作中遇到的大文件上传和下载的代码贴出来和大家分享一下. 大文件的上传的和下载是C++的平台通过调用WebService实现文件上传和下载到服务器 /// <summa ...

  3. html form表单提交数据并后台获取

    前台: HTML的代码:(关键是要在form里设置enctype="multipart/form-data",这样才能在提交表单时,将文件以二进制流的形式传输到服务器) <h ...

  4. 使用springMVC时无法加载CSS和JS文件

    解决办法:在spring配置文件里加上  <mvc:default-servlet-handler/>

  5. 如果ie6跳转

    try { (function(e) { /i.test(navigator.userAgent)) { window.location = "jump.html"; return ...

  6. Scala基础入门-1

    首先需要Scala开发环境的搭建,网上自己找教程. 声明常量与变量 val foo = 0 // 常量 var bar = 0 // 变量 在Scala中,更加鼓励使用val来进行声明,也就是推荐使用 ...

  7. Weex 开发入门

    去年也听说过 React Native 技术,现在好像很多大公司都在这套技术中踩坑,在开发自己的UI.工作中涉及不到,一直没有学习相关的知识. 并且听说阿里的 vue native,一直很期待.前段时 ...

  8. c语言 文件写入和读取

    #include<stdio.h> #include<stdlib.h> #include<string.h> #define N 10 struct studen ...

  9. ubuntu下lnmp的安装

    适用于ubuntu14.04和源是14.04的ubuntu上安装nginx(我学在线Moodle工作室---注这里安装的是最新版的nginx,并且解决pathinfo问题,特别适用于Moodle安装) ...

  10. 查看当前运行的SQL语句

    WITH sess AS ( SELECT es.session_id, database_name = DB_NAME(er.database_id), er.cpu_time, er.reads, ...