jquery on事件绑定-JQuery 中点击事件和实时绑定点击事件的区别

一、简介:

在Web项目中,经常使用jQuery。 您应该知道 JQuery 中的单击事件和实时绑定单击事件是有区别的。 随着jQuery版本的升级jquery on事件绑定,live()方法在jQuery1.9中已经被移除,不再支持。 ,后续版本被on()方法替代。

二、JQuery中click和live绑定点击事件的区别 1、点击绑定风暴

原理:当点击某个元素时,会发生点击事件。 click()方法触发点击事件,或者指定点击事件发生时运行的函数

click([[data],fn]) 每个匹配元素的click事件中绑定的处理函数,可以传入data供函数fn处理。

1、参数data是作为event.data属性值传递给storm对象的附加数据对象,中间参数以json格式传递

2、参数fn为每个选中元素的storm绑定的处理函数

[1] 无参数数据示例

jquery on事件绑定_绑定事件的方法_绑定事件的两种方式

$(document).ready(function() {
    $('#divid').click(function() {
        console.log('你好');
    });
});

[2]带有参数数据的click()方法





	JQuery [data]参数使用说明
 
 
	

$(function(){
     var message="把该信息传递给Fn函数";
     $("#divid").click({msg:message},function(event){           
                   $("#idTip").show().html(event.data.msg);
               }
     );//设置文本
     });
	


总结:在文档流中,通过scripts.so动态添加的元素(符合性)没有绑定点击事件

2.直播绑定风暴

$('#divId').live('click', function() {
    console.log('hello');
});

摘要:后续通过脚本动态添加的元素(符合性)也绑定到点击事件。 请注意,该方法仅在 jQuery1.9 之前的版本中可用。

绑定事件的两种方式_绑定事件的方法_jquery on事件绑定

3. jQuery中live()方法改为on()方法 1. live()方法

实时(类型,[数据],fn)

将事件处理程序附加到所有匹配元素,即使该元素是稍后添加的。

原则:

live() 方法适用于由于使用了 Storm 委托而尚未添加到 DOM 的元素:绑定到祖先元素的 Storm 处理程序可以响应在后代上触发的 Storm。 传递给 live() 的风暴处理函数不会绑定到元素,但会作为特殊的事件处理函数绑定到 DOM 树的根节点。

案件:


    
    $(function(){
        /*live()方法,在jQuery1.9中被移除*/
        $("div").live("click",function(){
            $(this).hide();
        });
    });

摘要: live() 方法在 jQuery1.7 中已被弃用jquery on事件绑定,该技术在 jQuery1.9 中被删除,并由 jQuery1.9+ 中的 on() 方法取代。

2.on()方法

on(events,[selector],[data],fn) 在所选元素上绑定一个或多个风暴处理函数。

参数说明:

events:由空格和可选命名空间分隔的一种或多种事件类型,例如“click”或“keydown.myPlugin”。

选择器:一个选择器字符串,用于过滤触发风暴的选择器元素的后代。 如果选择为空或省略,则当事件到达所选元素时始终会触发该事件。

data:当风暴触发时,应将 event.data 传递给风暴处理函数。

fn:风暴触发时执行的函数。 false 值也可以用作返回 false 的函数的缩写。

jQuery1.9官方文档中的一些描述:

【Changes of Note in jQuery 1.9】
    The .live() method has been deprecated since jQuery 1.7 and has been 
instead. To exactly match $("a.foo").live("click", fn), for example, you 
can write $(document).on("click", "a.foo", fn). For more information, see 
the .on() documentation. In the meantime, the jQuery Migrate plugin can be
 used to restore the .live() functionality.

例子:

1、绑定点击事件,使用off()方法去掉on()绑定的方法




 




$(document).ready(function(){
  $("#dd").on("click",function(){
             $(this).css("background-color","pink");
     });
    $("#ddd").click(function(){
         $("#dd").off("click");  //使用off()方法移除标签p上的on()所绑定的方法
        
    });
});



点击这个段落。

去掉on方法。

2.多个风暴绑定同一个函数




 




$(document).ready(function(){
    $("#dd").on("mouseover mouseout", function(){
$("body").css("background-color","lightgray");
          
    });
   $("#ddd").on("mouseover mouseout", function(){
$("body").css("background-color","red");
          
    });
});



点击这个段落。

点击这个段落。

3、多个风暴绑定不同的功能




 




           $(document).ready(function(){
  $("p").on({
    mouseover:function(){$("body").css("background-color","lightgray");},  
    mouseout:function(){$("body").css("background-color","lightblue");}, 
    click:function(){$("body").css("background-color","yellow");}  
  });
});



点击这个段落。

4. 绑定自定义事件




 



 


   
        
            //自定义事件
            $(document).on("event_mzwu_com", function(event, param1, param2) {
                alert(param1 + "n" + param2);
            });
            //触发自定义事件
            $("button:first").click(function() {
             //param1对应"Custom",param2对应 "Event"
                $(document).trigger("event_mzwu_com", ["Custom", "Event"]);
            });
        

5. 向函数传递数据




 




$(document).ready(function(){
   //传递数据到函数
	$("#dd").on("click", {msg: "你刚惦记我了!"}, handlerName)
	
});
//自定义函数	 
function handlerName(event)
{
  alert(event.data.msg);
}



点击这个段落。

6.应用于未创建的元素




 




$(document).ready(function(){
	var message="把该信息传递给Fn函数";
	//div下的p元素
    $("div").on("click","p",{msg:message},function(event){
        alert(event.data.msg);
  });
	
$("button").click(function(){
    $("

This is a new paragraph.

").insertAfter("button"); }); }); //自定义函数 function handlerName(event) { alert(event.data.msg); }

不在范围内