我仍然是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/
非常感谢任何帮助。
答案 0 :(得分:1)
您正在使用相同的textarea
创建多个id
。这是不允许的。
您可以更改以下添加代码:
$('.Add').live('click', function(e) {
$('<div><textarea id="txt'+ i +'"></textarea> <textarea id="txt'+ (i+1) +'"></textarea></div>').fadeIn('fast').appendTo('.Option');
i++;
});
而不是live
,请使用on()
。由于您没有动态添加.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++;
});
});
<强> Working sample 强>
答案 1 :(得分:1)
您选择.this:last
,并且不存在class
this
的元素。请改用textarea:last
作为选择器。此外,您的标记不一致;原文应该包含两个<div>
的另一个<textarea>
。 Here is a corrected version of your 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++;
});
});
那说,我不相信你当前的代码要么足够整洁,要么是通用代码。 See this jsFiddle以举例说明如何使其更清洁。
答案 2 :(得分:0)
这是一个有效的更新小提琴
<强>的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
的事实,每页应该是唯一的。
答案 3 :(得分:0)
我相信这是你想要达到的效果:
演示: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++;
});
});