使用Jquery单击时删除元素
Remove element on click with Jquery
我正在使用JQuery创建新的输入字段,其中包含一个移除按钮。remove按钮适用于原始元素,但不适用于使用JQuery创建的元素。
两个新的电子邮件字段添加后的文档
<fieldset>
<legend>Send Email</legend>
<label>Emails(s) to send notice to.</label>
<p>
<input type="email" name="emails[]" style="cursor: auto; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABHklEQVQ4EaVTO26DQBD1ohQWaS2lg9JybZ+AK7hNwx2oIoVf4UPQ0Lj1FdKktevIpel8AKNUkDcWMxpgSaIEaTVv3sx7uztiTdu2s/98DywOw3Dued4Who/M2aIx5lZV1aEsy0+qiwHELyi+Ytl0PQ69SxAxkWIA4RMRTdNsKE59juMcuZd6xIAFeZ6fGCdJ8kY4y7KAuTRNGd7jyEBXsdOPE3a0QGPsniOnnYMO67LgSQN9T41F2QGrQRRFCwyzoIF2qyBuKKbcOgPXdVeY9rMWgNsjf9ccYesJhk3f5dYT1HX9gR0LLQR30TnjkUEcx2uIuS4RnI+aj6sJR0AM8AaumPaM/rRehyWhXqbFAA9kh3/8/NvHxAYGAsZ/il8IalkCLBfNVAAAAABJRU5ErkJggg==); background-attachment: scroll; background-position: 100% 50%; background-repeat: no-repeat;"><span class="btn_orange"><a href="#" class="remove_field">x</a></span>
</p>
<p><input type="email" name="emails[]"><span class="btn_orange"><a href="#" class="remove_field">x</a></span></p><p><input type="email" name="emails[]"><span class="btn_orange"><a href="#" class="remove_field">x</a></span></p><p>
<span class="btn_orange"><a class="add_email_button" href="#">Add Another Email</a></span>
</p>
<p>
<span class="btn_orange"><a class="ui-button">Send Email</a></span>
</p>
</fieldset>
编写脚本
<script type="text/javascript">
$(document).ready(
function () {
$("#importbutton").click(function () {
$("#ProgressBarImg").show();
$.get('@Url.Action("Import", "Import")', {},
function (data) {
$('body').html(data);
$('#ProgressBarImg').hide();
});
$("#importbutton").removeAttr("href");
}
);
var dialog = $("#emailSection").dialog({
autoOpen: false,
height: 400,
width: 475,
modal: true
});
$('#emailButton').click(function () {
$(dialog).dialog("open");
$('#emailButton').removeAttr('href');
});
$('.add_email_button').closest('p').click(function () {
var html = '<p><input type="email" name="emails[]" /><span class="btn_orange"><a href="#" class="remove_field">x</a></span></p>';
$(html).insertBefore($(this));
});
$('a.remove_field').closest('p').click(function () {
$(this).remove();
});
}
);
</script>
您正在页面上最初的元素上设置一个事件。添加新元素后,新元素没有处理程序,您可以通过添加它们来添加它,但这是最好的方法。
使用事件委派:http://jsfiddle.net/mendesjuan/4my1dhw1/
$(document).on('click', 'a.remove_field', function () {
$(this).closest('p').remove();
});
这意味着你在监听整个文档的点击,但只过滤你感兴趣的内容
第二个好处是,您不需要为每个元素单独的处理程序,从而节省内存
我发布的代码在行为上与您的不同之处在于,它要求您单击x
。当您单击<p>
中的任何位置时,您的代码都会被删除。我之所以更改它,是因为没有一个CSS选择器可以模仿closest('p')
的功能,也就是说,CSS选择器不会出现在树上。然而,我所做的似乎更有意义,您之所以选择using closest('p')
,可能只是因为您想删除整个<p>
,但您可以从处理程序内部执行此操作。
对于页面加载后添加的元素,您应该使用:
$('body').on('click', '.classSelector', function(e) {
});
相关文章:
- 从组件状态的数组中删除元素
- 从数组中删除元素的最佳方法是:javascript/jquery
- 正则表达式条件来删除元素
- 使用javascript删除元素时出现的问题
- 当会话存储阵列中存在大量元素时,如何从中删除元素
- 从角度数组中删除元素
- AngularJs localStorage在循环中删除元素
- 在使用jquery插入之前删除元素
- 如何删除元素列表中的类并添加到另一个元素 Jquery.
- 更新分组条形图(转换或删除元素组)
- 向下滚动后如何用同一类逐个删除元素
- 如何防止 jQuery 事件在删除元素时冒泡
- 从jQuery对象中删除元素
- 如何删除元素的结束标记,添加一些文本,然后重新添加标记
- 从画布中删除元素
- 如何解析html以删除元素并只返回其位置的标题
- 使用 V8 从密集数组中删除元素的最佳方法是什么
- 如何使用jquery删除元素
- 根据成员属性从数组中删除元素
- 从中删除元素'的父元素,并将其附加到其他元素