答案 0 :(得分:1)
1st:您需要使用.on()
$("#select2").on('change',function(){});
或
$("body").on('change', '#select2' ,function(){});
但我认为.on()会起作用
第二名为所有人制作一个代码
$('select[id^="select"]').on('change',function(){
var ThisIt = $(this);
var id= ThisIt.val();
var getNextSelect = ThisIt.next('select[id^="select"]');
var dataString = 'id='+ id;
$.ajax({
type: "POST",
url: './php/selectProperty.php?nocache=' + (new Date()).getTime(),
data: dataString,
cache: false,
async: false,
success: function(html){
getNextSelect.html(html).promise().done(function(){
getNextSelect.prop("disabled", false); // Element(s) are now enabled.
});
}
});
});
答案 1 :(得分:0)
HTML
首先,我们需要更新HTML,以便它不依赖于硬编码ID,这使我们将来更容易维护。
其次,我们可以指定一个父元素来附加我们的事件处理程序;而不是直接将其附加到每个选择菜单。在这种情况下,我使用“.chain-select”类作为我的父元素。
<div class="chain-select">
<select>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
</select>
<select disabled></select>
<select disabled></select>
<select disabled></select>
<select disabled></select>
</div>
的JavaScript
现在我们已将事件处理程序附加到“.chain-select”,它将用作我们的委托目标。这意味着如果用户更改任何选择菜单,它是我们的“.chain-select”的后代,它将在事件冒泡到委托目标后触发我们的事件处理程序。
如果您要处理多个要添加基于事件的功能的元素或通过Ajax加载的元素,则此方法非常完美。
<script>
// Document Ready
$(function () {
$('.chain-select').on('change', 'select', function (e) {
var $select = $(e.currentTarget);
// RESET ALL NOT YET SELECTED SELECT MENUS
$select.nextAll('select').prop('disabled', true).empty();
$.ajax({
type: "POST",
url: './php/selectProperty.php?nocache=' + (new Date()).getTime(),
data: {
id: $select.val()
},
cache: false,
async: false,
success: function (html) {
// ENABLE AND POPULATE THE NEXT SELECT MENU
$select.next('select').html(html).prop('disabled', false);
}
});
});
});
</script>