⑴ jquery中的on方法能否为ajax新增的元素绑定事件
您好:是可以的。之前老版本一般用live()方法,现在给动态元素绑定事件,可以用on代替。
知识扩展:
jQueryon()方法是官方推荐的绑定事件的一个方法。
$(selector).on(event,childSelector,data,function,map)
由此扩展开来的几个以前常见的方法有.
bind()
$("p").bind("click",function(){
alert("Theparagraphwasclicked.");
});
$("p").on("click",function(){
alert("Theparagraphwasclicked.");
});
delegate()
$("#div1").on("click","p",function(){
$(this).css("background-color","pink");
});
$("#div2").delegate("p","click",function(){
$(this).css("background-color","pink");
});
live()
$("#div1").on("click",function(){
$(this).css("background-color","pink");
});
$("#div2").live("click",function(){
$(this).css("background-color","pink");
});
以上三种方法在jQuery1.8之后都不推荐使用,官方在1.9时已经取消使用live()方法了,所以建议都使用on()方法。
tip:如果你需要移除on()所绑定的方法,可以使用off()方法处理。
$(document).ready(function(){
$("p").on("click",function(){
$(this).css("background-color","pink");
});
$("button").click(function(){
$("p").off("click");
});
});
tip:如果你的事件只需要一次的操作,可以使用one()这个方法
$(document).ready(function(){
$("p").one("click",function(){
$(this).animate({fontSize:"+=6px"});
});
});
trigger()绑定
$(selector).trigger(event,eventObj,param1,param2,...)
$(document).ready(function(){
$("input").select(function(){
$("input").after("Textmarked!");
});
$("button").click(function(){
$("input").trigger("select");
});
});
多个事件绑定同一个函数
$(document).ready(function(){
$("p").on("mouseovermouseout",function(){
$("p").toggleClass("intro");
});
});
多个事件绑定不同函数
$(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");}
});
});
绑定自定义事件
$(document).ready(function(){
$("p").on("myOwnEvent",function(event,showName){
$(this).text(showName+"!Whatabeautifulname!").show();
});
$("button").click(function(){
$("p").trigger("myOwnEvent",["Anja"]);
});
});
传递数据到函数
functionhandlerName(event)
{
alert(event.data.msg);
}
$(document).ready(function(){
$("p").on("click",{msg:"Youjustclickedme!"},handlerName)
});
适用于未创建的元素
$(document).ready(function(){
$("div").on("click","p",function(){
$(this).slideToggle();
});
$("button").click(function(){
$("<p>Thisisanewparagraph.</p>").insertAfter("button");
});
});
希望我的解答能够帮助到您,谢谢。
⑵ jQury 绑定事件 on() bind()区别
jQuery绑定事件主要有bind和on两种方法,它们之间的主要区别在于事件冒泡。
bind方法直接将事件处理程序绑定到DOM元素上,而on方法在bind的基础上增加了selector参数,用于筛选指定的子元素。bind方法在事件冒泡过程中可能存在问题,因为它会绑定到所有匹配的元素上,而on方法则更灵活,可以只绑定到特定的子元素。
on方法比bind方法更加推荐使用,因为它提供了更高效和灵活的事件绑定方式。on方法可以为动态添加的元素绑定事件,而bind方法则无法实现。on方法还支持事件委托的概念,可以将事件绑定到更高层次的元素上,通过冒泡来处理事件,从而避免绑定到所有匹配的元素。
总结来说,bind方法在早期版本中较为常用,但其在兼容性、效率和灵活性方面存在一些问题。相比之下,on方法提供了更好的事件绑定方式,推荐在项目中使用。同时,on方法可以替代bind()、live()和delegate()方法,实现统一的事件绑定和解绑。