【发布时间】:2014-01-23 17:08:23
【问题描述】:
我有一个如下的 HTML 表单:
<div class="form_row">Add Note<input type="checkbox" name="add_note" id="add_note"></div>
<div class="form_row" id="addDiv" style="display:none;">
<div class="form_row">
<h4><a href="#" id="addScnt">Add Another Input Box</a></h4>
<div id="p_scents">
<p>
<label for="p_scnts"><input type="text" size="20" name="p_scnt_1"/></label>
</p>
<div id="new_notes">
</div>
</div>
</div>
JavaScript 是:
$('#add_note').click(function(){
if($("input[type='checkbox'][name='add_note']:checked").length > 0)
{
$('#addDiv').show(500);
}else{
$('#addDiv').hide(200);
}
})
var i = 2;
$('#addScnt').click(function(){
var html = '';
html += '<p>';
html += '<label for="p_scnts"><input type="text" size="20" name="p_scnt_"'+i+'/><a href="#" id="cancel_field">Cancel</a></label>';
html += '</p>';
$('#new_notes').append(html);
i++;
});
$('#cancel_field').click(function(){
alert('Test ')
$(this).parents('p').remove();
});
现在,我的问题是当我单击cancel 时,它什么也不做,既不提醒也不删除父 div。代码有什么问题?
编辑:
【问题讨论】:
-
ID 必须是唯一的,这可能是您的问题吗?
-
@A.Wolff 尝试使用
cancel_field类,结果相同! -
是的,因为您需要使用委托。请下次尝试发布更好的代码缩进;)
-
你有没有注意到
$('#addScnt')里面有两个函数?第一个函数创建元素,第二个添加事件处理程序。尝试将第二个函数移动到第一个函数的末尾。 -
@Epsil0neR 抱歉误读了你的评论,但你是对的