2013-01-19 99 views
0

我正在使用ajax。因此,要保持表單元素Ajax請求後的工作,它必須使用下面的代碼

$(document).ready(function() {  
    $(document).on("change", "#my-chk", function(){ 
      $("#my_id input[type=checkbox]").prop('checked', this.checked); 
     }); 

    $(document).on("click", "#add-account", function(){ 
      $.get('/my_url', function(data){ 
      alert(data); 
      }); 
     }); 
}); 

不過,我應該怎麼做才能讓AJAX請求後,下面的事件處理工作的方式我上面做一樣的嗎?

$("#my-date-range-picker").daterangepicker(
     { 
      ranges: { //.... } 
     }, 
     function(start, end) { //.... } 
    ); 
+0

採取與委託回調,某些事件,比如'change'不會在所有的瀏覽器照顧,因爲沒有泡沫了那裏的DOM。這似乎是錯誤的$(「。input [type = checkbox]」)'有沒有類名的點 –

+0

這只是錯字,不關注它。 –

+0

爲什麼你需要委託處理程序?在AJAX請求完成後,你不能直接將這些處理程序直接綁定到這些元素嗎?讓這些事件直到「文檔」一直都是冒泡的,可能比直接在元素上處理它們要昂貴。 –

回答

1

請注意,您必須把自定義的事件(在這種情況下,pick-range)觸發創建你的daterangepicker。但是,這是事件代表團的美,它總是可用的不管結合

$(document).on('pick-range', '#my-date-range-picker', function(e){ 
    $(e.currentTarget).daterangepicker(
    { 
     ranges: { //.... } 
    }, 
    function(start, end) { //.... } 
    ); 
}); 

// trigger it 
$('#my-date-range-picker').trigger('pick-range'); 

http://jsfiddle.net/DZz8R/

+0

它不起作用。 –

+0

我的不好,它需要'currentTarget',現在它會工作 – pocesar

+0

卻不起作用。 –

0

這是未經測試,但可能會爲你工作:

$("#my-date-range-picker").daterangepicker(
     { 
      ranges: { //.... } 
     }, 
     function(start, end) { //.... } 
    ).change(function() 
    { 
     alert('Change() handler called'); 
    }); 

http://api.jquery.com/change/