簡體   English   中英

jQuery on(change)第二次不起作用

[英]jQuery on(change) doesn't work second time

我有如下的級聯下拉菜單。 我在第二個和第三個下拉列表中動態列出選擇。 雖然第一個on change函數可以正常工作(我正在獲取項目列表),但是第二個on change($(“#pro”)。on('change',function(e))根本不會感覺到選擇的任何變化的項目。Chrome控制台沒有問題。可能是什么問題?

<div class="form-group">
  <label for="projectfamily">Proje Grubu</label>
  <select class="form-control" name="projectfamily" id="projectfam">
    <option value="">Seçiniz</option>
    @foreach($projectfamilies as $projectfamily)
    <option value= "{{$projectfamily->id}}">{{$projectfamily->projectfamily}}</option>
    @endforeach
  </select>
</div>

<div class="form-group">
  <label for="project">Proje Adı</label>
  <select class="form-control" name="project" id="pro">
    <option value= "" disabled></option>
  </select>
</div>

<div class="form-group">
  <label for="version">Versiyon</label>
  <select class="form-control" name="version" id="version">
    <option value="" disabled></option>
  </select>
</div>

JQuery的

$('#projectfam').on('change', function(e) {
    var projectfam = e.target.value;
    $.get('/ajax_projectfamily_post?projectfam=' + projectfam, function(data){
        $('#pro').empty();
        $('#version').empty();  
        $('#pro').append('<option value="' + '">' + "Seçiniz" + '</option>');

        $.each(data, function(i, deger){
            $('#pro').append('<option value="' + deger.id + '">' + deger.project + '</option>');
        });
    });
});

$("#pro").on('change', function(e) {
    var project = e.target.value;
    $.get('/ajax_project_post?project=' + project, function(data){
        $('#version').empty();
        $('#version').append('<option value="' + '">' + "Seçiniz" + '</option>'); 
        $.each(data, function(i, deger) {
            $('#version').append('<option value="' + deger.id + '">' + deger.version + '</option>');
        });
    });
});

它在chrome中似乎可以正常工作。 看到此小提琴替換了ajax調用。 ajax調用有問題嗎? 還是html語法錯誤? 檢查整個HTML頁面的有效性。 由於您只發布了一個片段,因此無法進一步診斷。

$('#projectfam').on('change', function(e) {
    var projectfam = e.target.value;
    var data = ['a', 'b', 'c'];

    $('#pro').empty();
    $('#version').empty();  
    $('#pro').append('<option value="' + '">' + "Seçiniz" + '</option>');

    $.each(data, function(i, deger){
        $('#pro').append('<option value="' + data[i] + '">' + data[i] + '</option>');
    });
});

$("#pro").on('change', function(e) {
    var project = e.target.value;
    var data = ['x', 'y', 'z'];
    $('#version').empty();
    $('#version').append('<option value="' + '">' + "Seçiniz" + '</option>'); 
    $.each(data, function(i, deger) {
        $('#version').append('<option value="' + data[i] + '">' + data[i] + '</option>');
    });
});

我會這樣做,之前我有一個類似的問題,需要在元素加載后分配onchange事件:

$('#projectfam').on('change', function(e) {
    var projectfam = e.target.value;
    $.get('/ajax_projectfamily_post?projectfam=' + projectfam, function(data){
        $('#pro').empty();
        $('#version').empty();  
        $('#pro').append('<option value="' + '">' + "Seçiniz" + '</option>');

       $.each(data, function(i, deger){
            $('#pro').append('<option value="' + deger.id + '">' + deger.project + '</option>');
       });
       addOnChangeThingy(); // load onclick functions
   });
});

function addOnChangeThingy(){
   $("#pro").on('change', function(e) {
      var project = e.target.value;
      $.get('/ajax_project_post?project=' + project, function(data){
          $('#version').empty();
          $('#version').append('<option value="' + '">' + "Seçiniz" + '</option>'); 
          $.each(data, function(i, deger) {
             $('#version').append('<option value="' + deger.id + '">' + deger.version + '</option>');
           });
       });
   });
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM