最近的項(xiàng)目要做一個(gè)網(wǎng)頁,使用到了Bootstrap,導(dǎo)入的jQuery版本是
<script type="text/javascript" src="js/jquery-1.11.3.min.js"></script>
同時(shí),里面有一個(gè)四級(jí)聯(lián)動(dòng)的下拉框,在網(wǎng)上找了一個(gè)四級(jí)聯(lián)動(dòng)的demo,修改之后可以使用,但是使用到的jQuery版本是
<script type="text/javascript" src="js/jquery-1.8.0.min.js"></script>
剛開始還不知道1.7版本前的jQuery和1.7版本之后的jQuery還有改動(dòng),只是發(fā)現(xiàn)當(dāng)引入較新的jQuery時(shí),Bootstrap的響應(yīng)式布局(導(dǎo)航條)可以使用,但是四級(jí)聯(lián)動(dòng)的下拉框就無法使用;當(dāng)使用版本較老的jQuery版本時(shí),可以使用四級(jí)聯(lián)動(dòng)的下拉框,但是無法使用Bootstrap的響應(yīng)式布局(導(dǎo)航條)。
在網(wǎng)上搜索了一下,發(fā)現(xiàn)了問題:
<b>從jQuery 1.7開始,on() 函數(shù)提供了綁定事件處理程序所需的所有功能,用于統(tǒng)一取代以前的bind()、 delegate()、 live()等事件函數(shù)。</b>
仔細(xì)檢查了一下,發(fā)現(xiàn)四級(jí)聯(lián)動(dòng)的下拉框中用到了 live() 函數(shù)來綁定事件。
$('li' , '#City').live('click' , function(){});
改為用 on() 函數(shù)的寫法應(yīng)該是:
$('#City').on('click' , 'li', function(){});
特別指出,四級(jí)聯(lián)動(dòng)的下拉列表中的元素是在jQuery代碼中動(dòng)態(tài)添加的。
此外,即使符合條件的元素是on()函數(shù)執(zhí)行后新添加,綁定事件對(duì)其依然有效。
附上 jQuery.on() 函數(shù) api 網(wǎng)站:
jQuery.on() 函數(shù) api