任務: 根據第一個列表中的選項動態創建第二個選擇列表。出於測試目的,我附上了簡單的場景。動態添加的選擇列表按預期工作
HTML:
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-2.1.4.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("select[name='optionone']").on('change',function(){
var option = $("select[name='optionone']").val();
jQuery.ajax({
type: "GET",
url: "data.php",
data: "option="+option,
success: function(response){
$("#ajaxcall").html(response);
$("#ajaxcall").show();
}
});
});
$('#ajaxcall').on('change', function(){
$("select[name='optiontwo']").on('change', function() {
var optionone = $("select[name='optionone']").val();
var optiontwo = $("select[name='optiontwo']").val();
console.log(optionone +'|||'+ optiontwo)
$.ajax({
type: "GET",
url: "data.php",
data: "optionone="+optionone+"&optiontwo="+optiontwo,
success: function(response){
$("#ajaxcall").html(response);
$("#ajaxcall").show();
}
});
});
});
});
</script>
</head>
<body>
Option one:
<select name="optionone">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
<option value="4">Option 4</option>
</select>
<div id="ajaxcall" style="display:none">
</div>
</body>
</html>
DATA.php
Option two:
<select name="optiontwo">
<option value="5">Option 5</option>
<option value="6">Option 6</option>
<option value="7">Option 7</option>
<option value="8">Option 8</option>
</select>
<?php var_dump($_GET) ?>
問題: 命名爲optiontwo
二名單將得到重視的應該。但是,當我現在選擇它的選項時,某些選項將起作用(例如Option 5
和Option 6
),而Option 7
將不起作用(它不會進行AJAX調用)。我不知道什麼會導致這種行爲。
我注意到,如果我刪除從第二個列表AJAX調用,並添加警報(「改爲」)是這樣的:
$('#ajaxcall').on('change', function(){
$("select[name='optiontwo']").on('change', function() {
alert('changed')
});
});
,改變optiontwo
幾次,然後它會調用警報幾次。我不知道這是否是正常行爲。
問題: 如何讓這件事情起作用?
使用optiontwo'而不是使用'div'元素的不可靠的'change'事件'一個動態的事件處理程序。 –
**邊注**如果您希望頁面加載速度更快,請在'