我正在通过选择下拉列表中的第一个选项来处理3个下拉1,drop down2到目前为止动态填充了这些选项。但是在第二次下拉选择选项时,问题就出现了第三次下拉没有填满。
<!DOCTYPE html>
<html>
<head>
<script src="jq.js" type="text/javascript"></script>
<script>
$(document).ready(function() {
$("#st").click(function() {
$("#ds").html('<option id="dsp">1</option><option>3</option><option>4</option>');
});
$("#dsp").click(function() {
$("#plc").html('<option>1</option><option>3</option><option>4</option>');
alert("hi");
});
});
</script>
<title>TODO supply a title</title>
</head>
<body>
<select>
<option id="st">1</option>
<option>2</option>
<option>3</option>
<option>4</option>
</select>
<select id="ds">
</select>
<select id="plc">
</select>
</body>
</html>
答案 0 :(得分:1)
如果要绑定(单击)-events以动态添加元素,则应使用:
$('[parent-element]').on('click', '[target-element]', function() {
// do something
});
这会产生类似
的内容 $('#ds').on('click', '#dsp', function() {
// do something
});
因为选择器无法使用$([element/id/class])
方法识别元素。
答案 1 :(得分:1)
您需要使用此类更改
$("#first").on('change', function() {
if ($(this).children(":selected").attr("id") == 'st') {
$("#ds").html('<option id="dsp">1</option><option>3</option><option>4</option>');
}
});
$("#ds").on('change', function() {
if ($(this).children(":selected").attr("id") == 'dsp') {
$("#plc").html('<option>1</option><option>3</option><option>4</option>');
}
});
$("#plc").on('change', function() {
alert("This Works");
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select id="first">
<option id="st">1</option>
<option>2</option>
<option>3</option>
<option>4</option>
</select>
<select id="ds"></select>
<select id="plc"></select>
&#13;
答案 2 :(得分:0)
将项目添加到DOM后,您还需要另外设置事件处理程序。
因此,当项目被添加时,您还需要重新添加点击处理程序:
$(document).ready(function() {
$("#st").click(function() {
$("#ds").html('<option id="dsp">1</option><option>3</option><option>4</option>');
$("#dsp").click(function() {
$("#plc").html('<option>1</option><option>3</option><option>4</option>');
alert("hi");
});
});
});
答案 3 :(得分:0)
在change
上使用select
事件来运行您的代码。另外,请在id
上指定select
,而不是option
。
JQuery的:
$("#st").on("change", function() {
...
});
$("#ds").on("change", function() {
...
});
HTML :
<select id="st">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
</select>
<select id="ds">
..
</select>
<select id="plc">
..
</select>
答案 4 :(得分:0)
不使用option
元素上的ID,最好使用这些值。如果用户将值更改回不是目标值的值,则需要重新填充下一个select
。最后,您希望选择在页面加载时加载 RIGHT - 在第一个和第二个上使用.change()
。
change
上的select
事件是您需要使用的事件,而不是click
事件:
$("#first").on('change', function() {
$("#ds").html( this.value === '1' ? '<option>1</option><option>3</option><option>4</option>' : '');
})
.change();
$("#ds").on('change', function() {
$("#plc").html(this.value === '1' ? '<option>1</option><option>3</option><option>4</option>' : '');
})
.change();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select id="first">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
</select>
<select id="ds"></select>
<select id="plc"></select>