我有一个JavaScript代码,我改编自使用.live()的旧冷,将其更改为.on(),因为我正在使用JQuery 1.9.1:
添加新输入字段可正常工作。问题是单击“删除”时没有删除添加的字段。它甚至没有运行事件点击事件,我也无法找出原因。
HTML code:
<h2><a href="#" id="addScnt">Add Another Input Box</a></h2>
<div id="p_scents">
<p>
<label for="p_scnts"><input type="text" id="p_scnt" size="20" name="p_scnt" value="" placeholder="Input Value" /></label>
<a href="#" id="remScnt">Remove</a>
</p>
</div>
JS代码:
$(function() {
var scntDiv = $('#p_scents');
var i = $('#p_scents p').size() + 1;
$('#addScnt').on('click', function() {
$('<p><label for="p_scnts"><input type="text" id="p_scnt" size="20" name="p_scnt_' + i +'" value="" placeholder="Input Value" /></label> <a href="#" id="remScnt">Remove</a></p>').appendTo(scntDiv);
i++;
return false;
});
$('#remScnt').on('click', function() {
alert('remove');
if( i > 2 ) {
$(this).parents('p').remove();
i--;
}
return false;
});
});
答案 0 :(得分:1)
如果尝试为动态生成的内容运行remove函数,请使用以下处理程序:
$(document).on('click', '#addScnt', function() {
$('<p><label for="p_scnts"><input type="text" id="p_scnt" size="20" name="p_scnt_' + i +'" value="" placeholder="Input Value" /></label> <a href="#" id="remScnt">Remove</a></p>').appendTo(scntDiv);
i++;
return false;
});
$(document).on('click', '#remScnt', function() {
alert('remove');
if( i > 2 ) {
$(this).parents('p').remove();
i--;
}
return false;
});
答案 1 :(得分:1)
活动代表团。
并避免重复使用ID。
我把它们改为了类。
HTML
<h2><a href="#" id="addScnt">Add Another Input Box</a></h2>
<div id="p_scents">
<p>
<label for="p_scnts"><input type="text" size="20" name="p_scnt" value="" placeholder="Input Value" /></label>
<a href="#" class="remScnt">Remove</a>
</p>
</div>
的JavaScript
$(function() {
var scntDiv = $('#p_scents');
var i = $('#p_scents p').size() + 1;
$('#addScnt').on('click', function() {
$('<p><label for="p_scnts"><input type="text" size="20" name="p_scnt_' + i +'" value="" placeholder="Input Value" /></label> <a href="#" class="remScnt">Remove</a></p>').appendTo(scntDiv);
i++;
return false;
});
$('#p_scents').on('click', '.remScnt', function() {
alert('remove');
if( i > 2 ) {
$(this).parents('p').remove();
i--;
}
return false;
});
});
答案 2 :(得分:0)
使用.on()
尝试使用动态生成的元素进行事件委派
$(document).on('click','#remScnt', function() {
alert('remove');
if( i > 2 ) {
$(this).parents('p').remove();
i--;
}
return false;
});
答案 3 :(得分:0)
问题是selector by id
应该只有1个元素,其中包含1个