使用jQuery删除多个文本区域框
Using jQuery to remove multiple textarea boxes
我对JavaScript和jQuery还很陌生。
我有jQuery的"添加框"功能,用于添加动态<textarea>
,但删除部分不起作用。
我的代码:
$(function() {
var i = $('textarea').size() + 1;
$('#remove').click(function() {
if (i > 1) {
$('.this:last').remove();
i--;
}
});
$('.Add').live('click', function(e) {
$('<div><textarea id="txt"></textarea> <textarea id="txt2"></textarea></div>').fadeIn('fast').appendTo('.Option');
i++;
});
});
演示:http://jsfiddle.net/dnwTV/
如有任何帮助,我们将不胜感激。
您正在选择.this:last
,并且不存在class
为this
的元素。请改用textarea:last
作为选择器。此外,您的标记不一致;原件应该有另一个<div>
来包裹两个<textarea>
。这是jsFiddle的更正版本。
$(function() {
var i = $('.Option > div').size() + 1;
$('#remove').click(function(e) {
if (i > 1) {
$('.Option > :last').remove();
i--;
}
e.preventDefault();
});
$('.Add').click(function(e) {
$('<div><textarea id="txt"></textarea> <textarea id="txt2"></textarea></div>').fadeIn('fast').appendTo('.Option');
i++;
});
});
也就是说,我认为您当前的代码不够整洁或通用。请参阅jsFiddle,了解如何使其更清洁。
注意
您正在使用相同的id
创建多个textarea
。这是不允许的。
您可以更改您的添加代码如下:
$('.Add').live('click', function(e) {
$('<div><textarea id="txt'+ i +'"></textarea> <textarea id="txt'+ (i+1) +'"></textarea></div>').fadeIn('fast').appendTo('.Option');
i++;
});
还有一件事
使用on()
而不是live
。由于您没有动态添加.Add
,因此不需要live
委派。只需使用以下内容:
$('.Add').on('click', function(e) {
$('<div><textarea id="txt"></textarea> <textarea id="txt2"></textarea></div>').fadeIn('fast').appendTo('.Option');
i++;
});
您的完整代码应该如下所示:
$(function() {
var i = $('textarea').size() + 1;
$('#remove').click(function() {
i = $('textarea').size() + 1;
if (i > 1) {
$('.Option > textarea:last').last().remove();
i--;
}
});
$('.Add').on('click', function(e) {
$('<textarea id="txt' + i + '"></textarea> <textarea id="txt' + (i + 1) + '"></textarea>').fadeIn('fast').appendTo('.Option');
i++;
});
});
工作样本
我相信这就是您想要达到的效果:
演示:http://jsfiddle.net/SO_AMK/dnwTV/4/
代码:
HTML:
<div class='Option'><textarea id="txt"></textarea> <textarea id="txt2"></textarea> </div>
<a href="#" id="remove">Remove</a>
<br/><br/>
<span class='Add'>Add Option</span>
jQuery:
$(function() {
var i = $('textarea').size() + 1;
$('#remove').click(function() {
if (i > 1) {
$('textarea:last').parent().remove();
i--;
}
});
$('.Add').click(function(){
$('<div><textarea id="txt"></textarea> <textarea id="txt2"></textarea></div>').fadeIn('fast').appendTo('.Option');
i++;
});
});
这里有一个更新的小提琴,可以工作
http://jsfiddle.net/dnwTV/5/
Javascript:
$(function() {
$('#remove').click(function() {
$('.Option div:last').remove();
});
$('.Add').live('click', function(e) {
var i = $('textarea').length + 1;
$('<div><textarea id="txt' + i + '"></textarea> <textarea id="txt' + (i+1) + '"></textarea></div>').fadeIn('fast').appendTo('.Option');
});
});
还修复了重用html id
的事实,它应该是每页唯一的。
相关文章:
- onkeyup无法动态创建多个文本区域
- 具有所有样式的文本正在复制到可编辑文本区域
- 在文本区域POST后解码JSON
- 在文本区域中使用jQuery.text()保持换行符
- ng在下拉列表和文本区域提交
- 将文本插入光标所在的文本区域
- 离开页面导航后保留文本区域内容
- Javascript-在文本区域中断,但不在段落中中断
- 当选择值x时,Javascript需要在正确的位置显示文本区域,从而循环通过具有选择选项的表单
- 测试文本区域中的特定文本格式
- 文本编辑后,append函数不适用于文本区域
- 如何在ReactJs中链接下拉列表和文本区域
- I'我试图在文本区域中进行特定的输入,调用特定的javascript函数,但没有成功;不起作用
- 使用JSON文件中的变量(字符串)填充文本区域
- JavaScript-如果以前不存在文本,如何从文本区域删除新行
- 如何在php中创建一个函数,该函数与文本区域一起工作,通过输入类似[color:red]的内容来打印具有等效颜色的文本
- 如何为动态创建的文本区域中输入的值更新ng模型
- 延迟高亮显示文本区域中的文本
- 将字母添加到文本区域的末尾
- TinyMCE在新添加的文本区域