首頁 > web前端 > js教程 > 主體

jQuery綁定事件on()與彈跳視窗的簡要概述_jquery

WBOY
發布: 2016-05-16 15:03:24
原創
1246 人瀏覽過

頁面上經常會有彈跳窗,有的彈跳窗是動態產生的,有的彈跳窗是在頁面底部隱藏的,對於動態產生的彈窗,如果要監聽彈窗的事件,可以使用jQuery的事件綁定on()方法實作。

如圖,彈跳窗是js動態產生的,透過點擊某個連結彈出,彈跳視窗中的「立即去使用」連結點擊後,實現的效果是關閉彈窗,並跳到錨點。


這個a標籤是:

<astyle="display:" title="立即去使用" target="_blank" gid="167" href="http://act.vip.xunlei.com/vip/2016/51dps/#gamelist" class="co_vip tdu ">立即去使用</a>
登入後複製

我們要監聽彈窗裡面的click事件,但這個彈跳窗本身是動態產生的,因此我們要監聽body,透過on()事件綁定,當動態產生這個彈跳窗時,可以監聽到click方法:

function jump_to_anchor() {
$("body").on("click", "span[name='msgbox_info'] a, .act-pop-table a", function (e) {
link = $(this).attr('href');
if (link == 'http://act.vip.xunlei.com/vip/2016/51dps/#gamelist') {
e.preventDefault();
msgExit();
window.location.href = link;
}
});
}
登入後複製

這裡實際上是綁定了兩個a標籤的事件綁定,都是當這個鏈接是某個url,阻止默認行為,並調用關閉彈窗方法,跳到該鏈接,也就是錨點。

下面要跟大家介紹jQuery on()方法綁定動態元素的點擊事件

之前就一直受這個問題的困擾,在jQuery1.7版本之後添加了on方法,之前就了解過,其優越性高於live(),bind(),delegate()等方法,在此之前專案中想用這個來測試結果發現,居然動態生成的標籤點擊了沒反應,而live方法卻能夠支持,於是乎到處查資料,問網友,結果找了好久在一篇文章中終於找到了答案。 。 。

jQuery 使用on綁定動態產生的元素時,不能直接用該物件操作,而是選擇其非動態產生的父節點然後再找到本身才能達到效果。大家看看原始碼就知道了。產生的按鈕基數項on方法點選無效live方法有效。

例如頁面上有下邊兩個元素:

<input type="button" name="addbtn" value="按钮添加" />
<div id="test"></div>
登入後複製

使用下邊的jQuery程式碼大家可以比較看看差異:

$(function () {
var a = 1,
$_div = $('#test');
$('input[name=addbtn]').on('click', function () {
$_div.append('<input type="button" name="test' + a + '" value="按钮' + a + '"/>');
a++;
});
//偶数项点击事件
$_div.on('click', 'input[name^=test]:even', function () { 
alert('我是有效的on方法,你能看见我吗:' + this.value);
});
//奇数项绑定的点击事件 发现点击无效,而是用live方法却能够支持
$('input[name^=test]:odd').on('click', function () { 
alert('我是无效的on方法,你不能看见我');
});
//奇数项绑定的点击事件 发现点击无效,而是用live方法却能够支持
$('input[name^=test]:odd').live('click', function () {
alert('我是live方法,你能看见我吗:' + this.value);
});
});
登入後複製

程式碼簡單,就不放示範頁了,如果有什麼不明白的,歡迎給我留言,小編會及時回覆大家的!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板