2017-02-12 38 views
0

触发变化和负荷事件我有它运行在选择框#type作为ID的变化事件代码。该元素通过ajax在引导模式窗口中加载。通过显示/隐藏相关元素并发出ajax请求,它可以在更改事件中正常工作。关于Ajax加载的内容

现在我想每次运行它,除了更改事件,也加载ajax内容,因为有时为#type元素加载默认值,我想显示/隐藏元素并在ajax内容加载时激发ajax请求那时。

我试图用load事件这样的,

$(document).on('load change', '#geo-form #type', function() {...

但ID没有工作。我该如何做这项工作。

以下是默认工作代码,截至目前。

$(document).on('change', '#geo-form #type', function() { 
    var value = $(this).val(); 
    console.log(value); 
    if (value == '') { 
     $.getJSON(url('ajax/divisions'), null, function (data) { 
      $("#geo-form #division_id").html(''); 
      $("#geo-form #division_id").append(
       $("<option></option>").text('Select one').val('') 
      ); 
      $.each(data, function (id, name) { 
       $("#geo-form #division_id").append(
        $("<option></option>").text(name).val(id) 
       ); 
      }); 
     }); 
    } 
    switch (value) { 
     case 'district': 
      $('#geo-form .division').removeClass('hide'); 
      $('#geo-form .district').addClass('hide'); 
      $('#geo-form .tehsil').addClass('hide'); 
      $('#geo-form .block').addClass('hide'); 
      break; 
     case 'tehsil': 
      $('#geo-form .division').removeClass('hide'); 
      $('#geo-form .district').removeClass('hide'); 
      $('#geo-form .tehsil').addClass('hide'); 
      $('#geo-form .block').addClass('hide'); 
      break; 
     case 'block': 
      $('#geo-form .division').removeClass('hide'); 
      $('#geo-form .district').removeClass('hide'); 
      $('#geo-form .tehsil').removeClass('hide'); 
      $('#geo-form .block').addClass('hide'); 
      break; 
     case 'village': 
      $('#geo-form .division').removeClass('hide'); 
      $('#geo-form .district').removeClass('hide'); 
      $('#geo-form .tehsil').removeClass('hide'); 
      $('#geo-form .block').removeClass('hide'); 
      break; 
    } 
}); 
+0

因此触发它'$(文件).trigger( “变”)' – epascarello

+0

将其应用到阿贾克斯加载的内容呢? – Ehs4n

+0

你试过了,看看会发生什么? – epascarello

回答

0

,您可以手动trigger它重新创建:

$("#geo-form #division_id").trigger('change'); 
+0

'change'事件工作正常。我只是希望它在页面加载时也触发,但其本身的内容(包括触发元素)通过ajax加载。 – Ehs4n

+0

我知道。加载或重新加载内容时,请运行此代码。这实际上并不是变化事件,它迫使处理程序运行。 –

+0

由于我使用bootstrap模式加载内容,因此我在模式组件的'loaded.bs.modal'事件中尝试了此代码。 bootstrap事件通过ajax在内容加载时触发,但是$(document).trigger('change')不会触发。 – Ehs4n