2017-02-12 4 views
0

Ich habe einen Code, der auf Änderung Ereignis der Auswahlbox #type als ID ausgeführt wird. Das Element wird über AJAX im modalen Bootstrap-Fenster geladen. Es funktioniert gut bei Änderungsereignissen, indem relevante Elemente angezeigt/versteckt werden und eine Ajax-Anforderung ausgelöst wird.Auslösen von Änderung und laden Ereignisse auf Ajax geladenen Inhalt

Jetzt möchte ich es jedes Mal ausführen, ajax Inhalt wird auch geladen, abgesehen von Änderungsereignis, weil manchmal ein Standardwert für #type Element geladen wird und ich Elemente anzeigen/verbergen und Ajax-Anfrage auf Ajax Inhalt laden soll diese Zeit.

Ich versuchte load Veranstaltung wie diese, zu verwenden

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

aber id hat nicht funktioniert. Wie kann ich das machen?

Hier ist der Standardarbeitscode ab sofort.

$(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

So auslösen es '$ (document) .trigger ("change")' – epascarello

+0

Wird es gelten auch geladen Inhalt Ajax? – Ehs4n

+0

Haben Sie es versucht und sehen, was passiert? – epascarello

Antwort

0

Sie können es trigger manuell auf neu erstellen:

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

'Change' Event funktioniert gut. Ich möchte nur, dass es auch beim Laden der Seite ausgelöst wird, aber der Inhalt selbst einschließlich des auslösenden Elements wird über Ajax geladen. – Ehs4n

+0

Ich weiß. Führen Sie diesen Code einfach aus, wenn Sie den Inhalt laden oder neu laden. Dies ist nicht das Änderungsereignis, es zwingt den Handler zum Ausführen. –

+0

Da ich Inhalt mit Bootstrap-modal geladen bin, habe ich diesen Code in 'loaded.bs.modal' Ereignis der modalen Komponente versucht. Das Bootstrap-Ereignis wird beim Laden von Inhalten über Ajax ausgelöst, aber '$ (document) .trigger ('change')' löst nicht aus. – Ehs4n

Verwandte Themen