概述
丹寨網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,丹寨網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為丹寨上千余家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的丹寨做網(wǎng)站的公司定做!
1、#Grid1Table不是#conut的父節(jié)點(diǎn),p標(biāo)簽是#logout的父節(jié)點(diǎn)
2、代碼寫法:
$('p').on('click', '#count', function() {
//function code here.
});
解析
1、p包裹a標(biāo)簽(id = logout),所以logout的父節(jié)點(diǎn)(父標(biāo)簽)為p(沒有標(biāo)注id或者class)
pa href='#' id='logout'【退出】/a/p
2、$("#logout").on('click',function() 方法要求參數(shù)為非隨動(dòng)變量(全局變量),所以#logout為不可行參數(shù),且由于代碼沒有貼全所以這里我先斷定#Grid1Table為非父節(jié)點(diǎn),而p為#logout父節(jié)點(diǎn),所以這里可以改成:
$('p').on('click', '#count', function() {
//function code here.
});
拓展內(nèi)容
juqery on()方法詳解
定義和用法
on() 方法在被選元素及子元素上添加一個(gè)或多個(gè)事件處理程序。
自 jQuery 版本 1.7 起,on() 方法是 bind()、live() 和 delegate() 方法的新的替代品。該方法給 API 帶來很多便利,我們推薦使用該方法,它簡(jiǎn)化了 jQuery 代碼庫。
注意:使用 on() 方法添加的事件處理程序適用于當(dāng)前及未來的元素(比如由腳本創(chuàng)建的新元素)。
提示:如需移除事件處理程序,請(qǐng)使用?off()?方法。
提示:如需添加只運(yùn)行一次的事件然后移除,請(qǐng)使用?one()?方法。
語法
$(selector).on(event,childSelector,data,function)
參數(shù)
event ? ?????????????必需。規(guī)定要從被選元素移除的一個(gè)或多個(gè)事件或命名空間。由空格分隔多個(gè)事件值,也可以是數(shù)組。必須是有效的事件。 ?
childSelector ? ?可選。規(guī)定只能添加到指定的子元素上的事件處理程序(且不是選擇器本身,比如已廢棄的 delegate() 方法)。 ?
data ? ?????????????? 可選。規(guī)定傳遞到函數(shù)的額外數(shù)據(jù)。 ?
function ? ?????????可選。規(guī)定當(dāng)事件發(fā)生時(shí)運(yùn)行的函數(shù)。 ?
on方法可以對(duì)新生成的元素綁定事件。
on方法第一個(gè)參數(shù)是觸發(fā)事件的名稱;第二個(gè)是偵聽元素,可以是現(xiàn)在的,也可以是動(dòng)態(tài)生成的;第三個(gè)就是具體的實(shí)際處理函數(shù)。
.on()方法事件處理程序到當(dāng)前選定的jQuery對(duì)象中的元素。
.on( events [, selector ] [, data ], handler(eventObject) )
events:類型: String
一個(gè)或多個(gè)空格分隔的事件類型和可選的命名空間,或僅僅是命名空間,比如"click", "keydown.myPlugin", 或者 ".myPlugin"。
selector:類型: String
一個(gè)選擇器字符串,用于過濾出被選中的元素中能觸發(fā)事件的后代元素。如果選擇器是 null 或者忽略了該選擇器,那么被選中的元素總是能觸發(fā)事件。
data:類型: Anything
當(dāng)一個(gè)事件被觸發(fā)時(shí),要傳遞給事件處理函數(shù)的event.data。
handler(eventObject):類型: Function()
事件被觸發(fā)時(shí),執(zhí)行的函數(shù)。若該函數(shù)只是要執(zhí)行return false的話,那么該參數(shù)位置可以直接簡(jiǎn)寫成 false。
本篇文章主要是對(duì)jQuery中delegate和on的用法與區(qū)別進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助
在jQuery1.7中
.delegate()已被.on()取代。對(duì)于早期版本,它仍然使用事件委托的最有效手段。
在事件綁定和委派,delegate()和on在一般情況下,這兩種方法是等效的。
.delegate()
指定的元素(屬于被選元素的子元素)添加一個(gè)或多個(gè)事件處理程序,并規(guī)定當(dāng)這些事件發(fā)生時(shí)運(yùn)行的函數(shù)。
代碼如下:
//
jQuery
1.4.3+
$(
elements
).delegate(
selector,
events,
data,
handler
);
//
jQuery
1.7+
$(
elements
).on(
events,
[selector],
data,
handler
);
例如:.delegate()
code:
代碼如下:
$("table").delegate("td","click",function(){
alert("hello");
});
.on()
code:
代碼如下:
$("table").on("click",
"td",
function()
{
alert("hi");
});
PS:
兩者區(qū)別是seleter和events順序不同
delegate和on方法被選元素的子元素必須是"合法的"子元素。比如
復(fù)制代碼
代碼如下:
$("table").delegate("button","click",function(){...});
$("table").on("click",
"p",
function(){...});
就不起作用,因?yàn)檎G闆r下,table子元素應(yīng)為tr,td...
on(events,[selector],[data],fn),參數(shù)[selector]是可選,
一個(gè)選擇器字符串用于過濾器的觸發(fā)事件的選擇器元素的后代。
例如:
代碼如下:
$("table").on("click",
".td1",
function()
{
alert("hi");
});
過濾class為td1的table子元素
而delegate的selector是必需的。
.bind()與.on()的區(qū)別:
(1)是否支持selector這個(gè)參數(shù)值。由于javascript的事件冒泡特性,如果在父元素上注冊(cè)了一個(gè)事件處理函數(shù),當(dāng)子元素上發(fā)生這個(gè)事件的時(shí)候,父元素上的事件處理函數(shù)也會(huì)被觸發(fā)。
如果使用on的時(shí)候,不設(shè)置selector,那么on與bind就沒有區(qū)別了。
(2)on綁定的事件處理函數(shù),對(duì)于未來新增的元素一樣可以的,和delegate效果相同,而bind則不行。?
(3) delegate用法與on()相同,只是參數(shù)的順序不同:
擴(kuò)展資料:
.bind()與.on()的實(shí)際應(yīng)用:
1.bind()是直接綁定在元素上 ,將一本地地址與一套接口捆綁。如無錯(cuò)誤發(fā)生,則bind()返回0。否則的話,將返回-1,應(yīng)用程序可通過WSAGetLastError()獲取相應(yīng)錯(cuò)誤代碼。
用于事件處理程序
function ClassName(){
this.eventHandler = (function(){
}).bind(this);
}
2.on()則實(shí)現(xiàn)事件代理, 可以在匹配元素上綁定一個(gè)或者多個(gè)事件處理函數(shù)。
(1) 用來綁定多事件,并且為同一函數(shù),如:
$('div').on('click mouseover',function(){
//do sth
});
(2)多個(gè)事件綁定不同函數(shù),如:
$('div').on({
'click':function(){
//do sth
},
'mouseover':function(){
//do sth
}
});
(3)事件代理,如:
html:
button id="bt1"按鈕1/button
jq:
$('#bt1').on('click',function(){
$('body').append('button按鈕2/button');
});
$('body').on('click','.bt2',function(){
console.log('這是bt2');
}
參考資料:百度百科-bind()
教你如何給
jQuery
on方法綁定的函數(shù)傳遞參數(shù),代碼如下:
復(fù)制代碼
代碼如下:
$(".loadingFlower").on("click",'',{name:"123",id:"234",tel:"345"},callback)
function
callback(event){
console.log(event.data.name);
//參數(shù)1
=123
console.log(event.data.id);
//參數(shù)2
=234
console.log(event.data.tel);
//參數(shù)3
=345
}