Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jquery添加/删除div_Javascript_Jquery - Fatal编程技术网

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: &nbsp; <input type="contact[0][name] type="text">
</div>
<div class="contact">
Name: &nbsp; <input type="contact[1][name] type="text">
</div>
<div class="contact">
Name: &nbsp; <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
类。但是,我猜想新元素可能会附加在
之外?你能提供更多的背景吗?是的,我在想