亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

AJAX加載了HTML但是HTML里面的CLICK事件無(wú)效

Original 2016-10-31 16:41:25 642
abstrakt:事件委托,ajax載入新dom之前js就加載完了,事件當(dāng)然沒(méi)有綁定到新載入的dom上。舉個(gè)例子,如果ajax載入了一個(gè)<span class="load"></span>這個(gè)時(shí)候如果你的js中寫(xiě)了$('.load').on('click',function(){ do something...});事件是綁定不上

事件委托,ajax載入新dom之前js就加載完了,事件當(dāng)然沒(méi)有綁定到新載入的dom上。

舉個(gè)例子,如果ajax載入了一個(gè)

<span class="load"></span>

這個(gè)時(shí)候如果你的js中寫(xiě)了$('.load').on('click',function(){ do something...});
事件是綁定不上去滴。
你需要$('body').on('click' , '.load' , function(){ do something ...});
原理很簡(jiǎn)單,將事件委托到body(當(dāng)然可以是其它父元素),等事件冒泡到父元素上面再進(jìn)行事件處理。當(dāng)然,如果你在body上綁定幾百個(gè)事件,基本上頁(yè)面就跪了。。。
so,還有一個(gè)方法,就是預(yù)判你要加載的dom,然后預(yù)先創(chuàng)建一個(gè)同樣的元素。
例如:你可以先在頁(yè)面中寫(xiě)一個(gè)

<span class="load load-hide">element</span>

然后將事件綁定到這個(gè)DOM上,ajax加載的時(shí)候只需要加載element
然后

$('.load').on('click' , function(){ do something ... });.......some code.......var $_load = $('.load'),
    $load  = $_load.clone(true),//true參數(shù)會(huì)將事件綁定克隆
    $ele   = $load.html(element);$_load.after($ele);

當(dāng)然,這種方法在一次性載入大量數(shù)據(jù)的情況下性能也非常堪憂。但是在零碎的不同類項(xiàng)的數(shù)據(jù)載入時(shí)比較方便。


Versionshinweise

Beliebte Eintr?ge