⑴ 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()方法,實現統一的事件綁定和解綁。