我遇到了jquery的问题。
我有一个带有4个下拉列表的div,我有一个“添加更多”按钮。
当我点击“添加更多”按钮时,在“添加更多”按钮上方创建了同一div的另一个实例。我是通过jQuery append()
方法完成的,并且它成功运行,但我的问题是要求说当我从下拉列表中选择“其他”时,应该打开一个文本框,我将填写名称在列表中。
我可以这样做但是当我点击“添加更多”并创建另一个实例时,当我从动态创建的列表框中选择“其他”时,不会创建文本框,因为它们的ID变得相同而且我知道id可以不一样。
同样,其余的下拉发生了。如果我按类名执行,则一次创建所有文本框。我不想要这个。 我希望你理解我的问题。 请帮助我,并给我一个如何管理它的解决方案。
谢谢大家,感谢stackoverflow.com
更新
$(document).ready(function() {
alert('here');
var content=$("#course").html();
var content1=$("#emp").html();
alert(content);
$("#add").click(function(){
var n=$("#course .count").length;
if(n!=3){
$("#course").append(content);
}
if(n==2){
$("#add").hide();
}
});
});
我的HTML就像
dropdown1 dropdown1 dropdown1 dropdown1添加更多按钮
当我通过append()选择动态生成的下拉菜单时,“其他”的文本框不会出现意味着无法处理动态生成的div上的事件,谢谢
答案 0 :(得分:1)
你或许想要这样的东西吗?
<html>
<head>
<title>Scripttest</title>
<script type="text/javascript" src="js/jquery-1.7.1.min.js">
</script>
<script type="text/javascript">
var current = 1;
$(document).ready(function() {
$("#addmore").bind('click', function() {
$("#somediv").append(
$("<select/>").attr("id", current).attr("size", 1)
.append('<option value="someoption">Some Option</option>' +
'<option value="other">Other</option>')
);
$("<br/>").insertAfter($("#"+current));
current++;
});
$("#somediv").delegate('select', 'change', function() {
if($(this).val() == 'other') {
$("<textarea/>").attr("id", "tb_"+$(this).attr("id")).insertAfter($(this));
}
else {
$("#tb_" + $(this).attr("id")).remove();
}
});
});
</script>
</head>
<body>
<button id="addmore">Add more</button>
<div id="somediv">
</div>
</body>
</html>
如果选择“其他”选项,则允许您添加下拉列表并在其后面添加文本区域,如果取消选择,则删除它。