javascript事件绑定、事件解绑,多事件冲突总结

(1)全局监听事件
$(document).on( "swipeleft", function(e){
mpView.swipeleftTime();
});




*注意:要用匿名函数,外调函数会出异常








(2)bind跟on的区别


bind()函数是jQuery 1.7之前或更早版本采用的一个用来绑定事件处理程序的函数;on()函数是jQuery 1.7版本提供的首选的用来绑定事件处理程序的函数;




其实这两个函数基本上用法一致,中,bind()函数一次只能为标签对象绑定一个事件的处理程序,而on()函数则可以一次为多个不同的事件绑定处理程序。








*注意事项:


on跟bind在给组件绑定事件时,函数要用匿名函数,不要用外调函数,要不会出异常


对的
$("#"+data.list[i].bustype).on("click",function(){alert("heihei");});


错的
$("#"+data.list[i].bustype).on("click",pageView.haha());














(3)unbind  松绑解除事件


(1)解除指定元素所有的事件
$("p").unbind();








(2)解除指定元素指定事件
$("p").unbind("swipeleft");










(3)解除指定元素指定事件的指定函数
$("p").unbind("swipeleft",function(){});






(3.5)(这句话需谨慎 很bug 几乎就是个bug 只在重庆银行实现过)解除全局document上的指定组件的事件方法
$(document).unbind("swipeleft","#frame-page",function(e){
Backbone.history.history.back();
});








(4)*注意事项
跟on bind一样 要用匿名函数














(4)***(很吊)把局部监听事件挂到全局




局部监听当你切换到其他页面回来后监听会失效
挂到全局就可以一直监听
这是个bug




局部监听
$("#id").on("click",function(e){


});






挂到全局
$(document).on("click","#id",function(e){


});






局部监听当你切换到其他页面回来后监听会失效
挂到全局就可以一直监听
这是个bug






----------------------------------------------------------------------------------------------------------


解决多事件冲突




(1)阻止多事件的冒泡
就是一个div包着以个input 相隔控件都被绑定了事件
你只想执行input控件的事件不想执行div事件
用下面这句话:
e.stopPropagation()










代码块:
$("input").bind(


  "click", 


  function(event){
alert("hehe");
    event.stopPropagation();
  }


);










(2)阻止默认行为
比如给一个submit控件绑定了click事件 
但是只想促发click不想促发提交submit事件 
就用下面这句话:
e.preventDefault();






代码块:
$("input").bind(


  "click", 


  function(event){
alert("hehe");
    event.preventDefault();
  }


);






(3)阻止默认行为跟冒泡行为
return false




代码块:
$("input").bind(


  "click", 


  function(event){
alert("hehe");
    return false;


  }


);



































你可能感兴趣的:(javascript)