2016-09-30 188 views
0

我有一些jQuery代碼在select下拉列表值被更改時填充表單。它本身按預期工作,但我需要在加載頁面時觸發它。當使用.trigger('change')時,jQuery change()事件不會觸發

我在選擇器中包含父表,因爲<select>元素是動態創建的。

正如我所說的,當用戶進行下拉選擇時,按預期工作,但以下$.each不會觸發事件,即使它遍歷數組並更改下拉值 - 更改事件從不觸發。

jQuery(document).ready(function ($) { 

    var _dropdownVals = [ '-1', '11', '63' ]; 

    $.each(_dropdownVals, function (val) { 
     $('select[name="form_list_0"]').val(val).trigger('change'); 
    }); 

    $('table').on('change', 'select[name^="form_list_"]', function() { 
     ... do something 
    }); 

}); 

我甚至不認爲.trigger()應該是必要的...

誰能告訴我,爲什麼更改事件可能不會被解僱?

+1

在分配它之前,您正在觸發「更改」事件。 –

+0

@AlanJurczak是的,我是。這解決了這個問題。 – rwkiii

回答

4

它是射擊,但你還沒有註冊事件處理程序!事件處理程序只處理註冊後觸發的事件。試試這個:

$('table').on('change', 'select[name^="form_list_"]', function() { 
    ... do something 
}); 

$.each(_dropdownVals, function (val) { 
    $('select[name="form_list_0"]').val(val).trigger('change'); 
}); 

你,順便說一句,需要使用trigger,因爲改變值編程不會自動觸發事件。

+0

這可以很好地解決問題。我剛剛學到一些東西。謝謝。 – rwkiii

相關問題