任务: 根据第一个列表中的选项动态创建第二个选择列表。出于测试目的,我附上了简单的场景。动态添加的选择列表按预期工作
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'事件'一个动态的事件处理程序。 –
**边注**如果您希望页面加载速度更快,请在'