2013-01-19 54 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/