2014-03-05 18 views
0

我有兩個原型JS觀察者的一部分,根據其他用戶操作可能會改變內容而不是div的結構。問題是包含這兩個元素的div通過ajax call()動態地改變。因此,我的代碼只工作一次,並且在ajax調用(新的Ajax.Request(url,{參數...)之後,即使元素具有相同的類名稱,divs結構等,也會停止工作。原型Ajax調用後的新觀察者

要更具體地講,這是我有:

<!-- COD Hck --> 
<script type="text/javascript"> 
$$('.pm_cashondelivery').invoke('on','click','.pm_cashondelivery', function(event, el){ 
    $('id_flatrate_flatrate').setStyle({'display': 'block'}); 
    $$('.metodose').each(
         function(elem){ 
          elem.checked=false; 
         }); 

    $('s_method_flatrate_flatrate').checked=true; 

    $$('.mayor').each(
     function(elem){ 
      elem.setStyle({'display': 'none'}) 
     }); 

}); 

$$('.metrest').invoke('on', 'click','.metrest', function(event, el){ 
    $('id_flatrate_flatrate').setStyle({'display': 'none'}); 
    $$('.metodose').each(
         function(elem){ 
          elem.checked=false; 
         }); 

    $$('.mayor').each(
     function(elem){ 
      elem.setStyle({'display': 'block'}) 
     }); 

    $$('.mayor input').each(

         function(elem){ 
          setTimeout(function(){ 
           elem.setAttribute('checked',true); 
           },1); 
          elem.checked=true;//Check double time due Chrome bug 
         }); 
}); 
</script> 

第一個觀察者是:$$('.pm_cashondelivery').invoke('on','click','.pm_cashondelivery', function(event, el){第二觀察者$$('.metrest').invoke('on', 'click','.metrest', function(event, el){我需要這個觀察家仍然即使在同一個div的Ajax調用後的工作任何形式的幫助會。請高度讚賞。

Ricardo

回答

0

如果正在使用每個Ajax請求重新創建div.pm_cashondeliverydiv.metrest元素,則需要在文檔樹的更上方找到一個元素,以便將委派的事件處理程序附加到該元素。

例如:

$(document).on("click", ".pm_cashondelivery", function(event) { 
    // ... 
}); 

$(document).on("click", ".metrest", function(event) { 
    // ... 
});