Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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
Jquery 在创建新div时循环使用_Jquery - Fatal编程技术网

Jquery 在创建新div时循环使用

Jquery 在创建新div时循环使用,jquery,Jquery,我有一个div,我们叫它class=“phoneNo”。在div内部有两个链接,一个是添加另一个与之类似的div,另一个是删除div本身。我试图创建一个循环,如果只有一个div,“delete”链接应该隐藏,如果有多个div,“delete”链接应该显示在所有div上。 到目前为止,我提出了这个,但没有成功: var pCount = $(".phoneNo").length; $(pCount).each(function(){

我有一个div,我们叫它class=“phoneNo”。在div内部有两个链接,一个是添加另一个与之类似的div,另一个是删除div本身。我试图创建一个循环,如果只有一个div,“delete”链接应该隐藏,如果有多个div,“delete”链接应该显示在所有div上。

到目前为止,我提出了这个,但没有成功:

var pCount = $(".phoneNo").length;
                $(pCount).each(function(){
                    if (pCount <= 1) {
                        $("a.deleteThis").hide();
                     } 
                     else if (pCount >= 1) {
                        $("a.deleteThis").show();
                     }
                     return true;
                });

代码的问题是,您正在将一个int存储到pCount中,然后尝试获取该int的jQuery对象。我会有一点不同的想法。请记住,您可以将选择器与空格链接,以便在父级中对其进行范围限定

if ($(".phoneNo").length == 1)
  $(".phoneNo a.deleteThis").hide();
else
  $(".phoneNo a.deleteThis").show();
更新

确保每次创建或删除phoneNo时都运行上述逻辑

<div class="phoneNoCollection">
  <div class="phoneNo">
    <input type="text" name="phoneNo" value="123 456 7890"/>
    <a class="deleteThis">Delete</a>
    <a class="add">Add another</a>
  </div>
</div>

<script type="text/javascript">
  $(function() {
    // initial setup
    $(".phoneNo .deleteThis").click(removeParent);
    $(".phoneNo .add").click(appendPhoneNo);
    checHide();
  });

  function checkHide() {
    // logic from above
    if ($(".phoneNo").length == 1)
      $(".phoneNo a.deleteThis").hide();
    else
      $(".phoneNo a.deleteThis").show();
  }

  function removeParent(e) {
    $(e.target.parent).remove();
    checkHide();
  }

  function appendPhoneNo() {
    var el$ = $("<div class='phoneNo'><input type='text' name='phoneNo'/>" + 
      "<a class='deleteThis'>Remove</a><a class='add'>Add another</a></div>"));
    $el.child(".deleteThis").click(removeParent);
    $el.child(".add").click(appendPhoneNo);
    $el.appendTo(".phoneNoCollection");
    checkHide();
  }
</script>

删除
再加一个
$(函数(){
//初始设置
$(“.phoneNo.deleteThis”)。单击(删除父项);
$(“.phoneNo.add”)。单击(appendPhoneNo);
切奇德();
});
函数checkHide(){
//自上而下的逻辑
如果($(“.phoneNo”).length==1)
$(“.phoneNo a.deleteThis”).hide();
其他的
$(“.phoneNo a.deleteThis”).show();
}
函数removeParent(e){
$(e.target.parent).remove();
选中隐藏();
}
函数appendPhoneNo(){
变量el$=$(“”+
“删除另一条”);
$el.child(“.deleteThis”)。单击(removeParent);
$el.child(“.add”)。单击(appendPhoneNo);
$el.附件(“.phoneNoCollection”);
选中隐藏();
}

您的代码的问题是,您正在将一个int存储到pCount中,然后尝试获取该int的jQuery对象。我会有一点不同的想法。请记住,您可以将选择器与空格链接,以便在父级中对其进行范围限定

if ($(".phoneNo").length == 1)
  $(".phoneNo a.deleteThis").hide();
else
  $(".phoneNo a.deleteThis").show();
更新

确保每次创建或删除phoneNo时都运行上述逻辑

<div class="phoneNoCollection">
  <div class="phoneNo">
    <input type="text" name="phoneNo" value="123 456 7890"/>
    <a class="deleteThis">Delete</a>
    <a class="add">Add another</a>
  </div>
</div>

<script type="text/javascript">
  $(function() {
    // initial setup
    $(".phoneNo .deleteThis").click(removeParent);
    $(".phoneNo .add").click(appendPhoneNo);
    checHide();
  });

  function checkHide() {
    // logic from above
    if ($(".phoneNo").length == 1)
      $(".phoneNo a.deleteThis").hide();
    else
      $(".phoneNo a.deleteThis").show();
  }

  function removeParent(e) {
    $(e.target.parent).remove();
    checkHide();
  }

  function appendPhoneNo() {
    var el$ = $("<div class='phoneNo'><input type='text' name='phoneNo'/>" + 
      "<a class='deleteThis'>Remove</a><a class='add'>Add another</a></div>"));
    $el.child(".deleteThis").click(removeParent);
    $el.child(".add").click(appendPhoneNo);
    $el.appendTo(".phoneNoCollection");
    checkHide();
  }
</script>

删除
再加一个
$(函数(){
//初始设置
$(“.phoneNo.deleteThis”)。单击(删除父项);
$(“.phoneNo.add”)。单击(appendPhoneNo);
切奇德();
});
函数checkHide(){
//自上而下的逻辑
如果($(“.phoneNo”).length==1)
$(“.phoneNo a.deleteThis”).hide();
其他的
$(“.phoneNo a.deleteThis”).show();
}
函数removeParent(e){
$(e.target.parent).remove();
选中隐藏();
}
函数appendPhoneNo(){
变量el$=$(“”+
“删除另一条”);
$el.child(“.deleteThis”)。单击(removeParent);
$el.child(“.add”)。单击(appendPhoneNo);
$el.附件(“.phoneNoCollection”);
选中隐藏();
}
$(pCount)。每个都不是有效的选择器,而是长度中的整数

$(".phoneNo").each(...
$(pCount)。每个都不是有效的选择器,而是长度中的整数

$(".phoneNo").each(...

格维兹,隐藏和整齐的链子配合得很好。问题是浏览器未正确检测到正在创建新的.phoneNo div和/或未对其进行计数,从而导致a.delete此项仍处于隐藏状态:-(哦,你必须确保在你的逻辑中执行这个逻辑来创建/删除div。更新答案来显示这个。嗯…试图解决你的解决方案,但我有点困难。我想我正在慢慢走向解决方案。谢谢你的指针,gWhiz.gWiz,隐藏与整洁的链接配合得很好。问题是m表示浏览器未正确检测到正在创建新的.phoneNo div和/或未对其计数,这将导致a.delete此项保持隐藏状态:-(哦,你必须确保在你的逻辑中执行这个逻辑来创建/删除div。更新答案以显示这一点。嗯……试图解决你的解决方案,但我有点困难。我想我正在慢慢找到解决方案。谢谢你的指点,格维兹。