Javascript 使用jquery添加/删除div
我将代码更改为以下内容:Javascript 使用jquery添加/删除div,javascript,jquery,Javascript,Jquery,我将代码更改为以下内容: $(document).ready(function () { $('#add').on('click', function () { var $contacts = $(".contact"); $("<div/>").append($("<input>", { "type": "text",
$(document).ready(function () {
$('#add').on('click', function () {
var $contacts = $(".contact");
$("<div/>").append($("<input>", {
"type": "text",
"name": "contact[" + $contacts.length + "][name]"
})).insertAfter($contacts.last());
});
});
<div class="contact">
Name: <input type="contact[0][name] type="text">
</div>
<div class="contact">
Name: <input type="contact[1][name] type="text">
</div>
<div class="contact">
Name: <input type="contact[2][name] type="text">
</div>
您可以从使用多维数组开始
<div class="contact">
<input type="text" name="contact[0][name]">
...
</div>
<div class="contact">
<input type="text" name="contact[1][name]">
...
</div>
...
通过这种方式,您将收到一个很好的PHP数组,该数组如下所示:
Array
(
[0] => Array
(
[name] => foo
)
[1] => Array
(
[name] => bar
)
...
)
<input type='button' id="add" value="Add more" />
<br />
<div id="contact">
<input type="text" name="contact1" id="contact1" />
<input type="text" name="contact2" id="contact2" />
<input type="text" name="contact3" id="contact3" />
</div>
通过使用DOM模板作为模板,可以使用更复杂的布局
您可以从使用多维数组开始
<div class="contact">
<input type="text" name="contact[0][name]">
...
</div>
<div class="contact">
<input type="text" name="contact[1][name]">
...
</div>
...
通过这种方式,您将收到一个很好的PHP数组,该数组如下所示:
Array
(
[0] => Array
(
[name] => foo
)
[1] => Array
(
[name] => bar
)
...
)
<input type='button' id="add" value="Add more" />
<br />
<div id="contact">
<input type="text" name="contact1" id="contact1" />
<input type="text" name="contact2" id="contact2" />
<input type="text" name="contact3" id="contact3" />
</div>
通过使用DOM模板作为模板,可以使用更复杂的布局 要“正确”地完成,您需要某种MVC(模型视图控制器)或类似的设计。您应该研究一些客户端框架(如Angular.js、Backbone等),以简化工作 如果您不想使用框架,一个(相对)简单的方法是将模板保持为字符串(参见下面的示例)。 然后在javascript中保留一个计数器,在添加行时递增,替换模板变量并将结果字符串用作innerHtml,即:
var contactTemplate = '<input type="text" name="contact{{id}}" id="contact{{id}}" val="{{Name}}">...';
var counter = 1;
var addContact = function(data) {
counter++;
var html = contactTemplate.replace(/{{id}}/g, counter).replace(/{{Name}}/g, data.Name);
var newElement = $('<div>'+html+'</div>');
$('#container').append(newelement);
}
var contactTemplate='…';
var计数器=1;
var addContact=函数(数据){
计数器++;
var html=contactTemplate.replace(/{{id}}/g,counter.replace(/{{Name}}/g,data.Name);
var newElement=$(''+html+'');
$(“#容器”).append(新元素);
}
要“正确”地执行,您需要某种MVC(模型视图控制器)或类似的设计。您应该研究一些客户端框架(如Angular.js、Backbone等),以简化工作
如果您不想使用框架,一个(相对)简单的方法是将模板保持为字符串(参见下面的示例)。
然后在javascript中保留一个计数器,在添加行时递增,替换模板变量并将结果字符串用作innerHtml,即:
var contactTemplate = '<input type="text" name="contact{{id}}" id="contact{{id}}" val="{{Name}}">...';
var counter = 1;
var addContact = function(data) {
counter++;
var html = contactTemplate.replace(/{{id}}/g, counter).replace(/{{Name}}/g, data.Name);
var newElement = $('<div>'+html+'</div>');
$('#container').append(newelement);
}
var contactTemplate='…';
var计数器=1;
var addContact=函数(数据){
计数器++;
var html=contactTemplate.replace(/{{id}}/g,counter.replace(/{{Name}}/g,data.Name);
var newElement=$(''+html+'');
$(“#容器”).append(新元素);
}
在您的输入周围有一个div,然后您可以使用将另一个输入放在列表的末尾。此外,每次创建元素时,您都可以通过调用.children().length
获取单个div中的输入数,将该数加1 在您的输入周围有一个div,然后您可以使用将另一个输入放在列表的末尾。此外,每次创建元素时,您都可以通过调用.children().length
获取单个div中的输入数,将该数加1 $(文档).ready(函数(){
$(document).ready(function () {
$('#add').on('click', function () {
var newID = 'contact' + ($('input:text').length + 1 );
newDiv = '<input type="text" name="' + newID + '" id="' + newID + '" value="' + newID + '" />';
$('#contact').html( $('#contact').html() + newDiv );
});
});
$('#添加')。在('单击',函数(){
var newID='contact'+($('input:text')。长度+1);
newDiv='';
$('#contact').html($('#contact').html()+newDiv);
});
});
其中,HTML如下所示:
Array
(
[0] => Array
(
[name] => foo
)
[1] => Array
(
[name] => bar
)
...
)
<input type='button' id="add" value="Add more" />
<br />
<div id="contact">
<input type="text" name="contact1" id="contact1" />
<input type="text" name="contact2" id="contact2" />
<input type="text" name="contact3" id="contact3" />
</div>
$(文档).就绪(函数(){
$('#添加')。在('单击',函数(){
var newID='contact'+($('input:text')。长度+1);
newDiv='';
$('#contact').html($('#contact').html()+newDiv);
});
});
其中,HTML如下所示:
Array
(
[0] => Array
(
[name] => foo
)
[1] => Array
(
[name] => bar
)
...
)
<input type='button' id="add" value="Add more" />
<br />
<div id="contact">
<input type="text" name="contact1" id="contact1" />
<input type="text" name="contact2" id="contact2" />
<input type="text" name="contact3" id="contact3" />
</div>
首先,给不同的元素赋予相同的id是非常糟糕的做法。如果您想一次选择多个元素,可以使用class而不是id。这类似于这个问题……为什么要标记mysql和PHP?好的。我现在正在努力,我会很快发布我的更新。我要将所有内容更改为类而不是id。我一直在错误地执行此操作,最终需要更改所有代码。请参阅上面的更新。我改变了我原来的帖子。我不确定这个网站是否应该像我现在这样工作。更改原始文本可以吗?或者我应该如何发布添加/更改的代码?首先,给不同的元素赋予相同的id是非常糟糕的做法。如果您想一次选择多个元素,可以使用类而不是id。这与此问题类似……为什么要标记mysql和PHP?好的。我现在正在努力,我会很快发布我的更新。我要将所有内容更改为类而不是id。我一直在错误地执行此操作,最终需要更改所有代码。请参阅上面的更新。我改变了我原来的帖子。我不确定这个网站是否应该像我现在这样工作。是否可以更改原始文本,或者我应该如何发布添加/更改的代码;然而,它并没有给“$\u POST”增加价值。我目前有三行,当我“添加”另一行并提交时,它只显示“联系人”数组中现有的三行。@XanderNGCC,您能显示代码的新面貌吗?什么是print\r($\u POST)
现在返回?@XanderNGCC,我更新了答案,添加了缺少的contact
类。但是,我猜想新元素可能会附加在
之外?你能提供更多的背景吗?是的,我想他们也在外面,但我不明白。是我的“联系人”类div之后的下一个标记,所以我不确定为什么它没有捕捉到它。在我按“添加”键查看代码插入的位置后,是否可以查看“活动”源代码?此外,是否可以在“添加”代码中添加更多文本?我想在添加的输入表单前面添加“Name:”。它最终将是一个输入块添加到每种类型的“添加”按钮被按下;然而,它并没有给“$\u POST”增加价值。我目前有三行,当我“添加”另一行并提交时,它只显示“联系人”数组中现有的三行。@XanderNGCC,您能显示代码的新面貌吗?什么是print\r($\u POST)
现在返回?@XanderNGCC,我更新了答案,添加了缺少的contact
类。但是,我猜想新元素可能会附加在
之外?你能提供更多的背景吗?是的,我在想