1

if (i>0)在这里的陈述不起作用,有什么建议吗?

http://jsfiddle.net/qup2R/

我希望它防止我的初始表单框对 $('.remove').click(function() ifi = 0 做出反应

<html>
  <head>
    <script src="jquery.js"></script>
    <script type="text/javascript">
      var i = 0;
      $('document').ready(function () {
        if (i > 0) {
          $('.remove').click(function () {
            i--;
            $(this).closest('form').remove();
          });
        }
        $('.clickme').click(function () {
          if (i < 5) {
            i++;
            $(".form1").last().clone(true, true).appendTo("body");
          } else {
            $(".form1")
          }
        });
      });
    </script>
  </head>

  <body>
     <h3>Invite your friends</h3>

    <form class="form1">
      <input id="email" name="email" />
      <a class="remove" href="#">Remove</a>
      <br/>
      <br/>
      <a class="clickme" href="#">Add</a>
    </form>
  </body>
</html>
4

3 回答 3

2

在 click 函数中使用语句并添加逻辑运算符,例如&&以获得准确的结果。

 $('.remove').click(function () {
     if (i > 0 && i < 5 ) {
         i--;
         $(this).closest('form').remove();
     }
 });

 $('.clickme').click(function () {
     if (i < 5 && i > 0) {
          i++;
          $(".form1").last().clone(true, true).appendTo("body");
     }
 });
于 2013-01-30T12:03:00.183 回答
2

再看看你的代码:

    if (i > 0) {
      $('.remove').click(function () {
        i--;
        $(this).closest('form').remove();
      });
    }

.remove只会在i > 0. 在 DOM 就绪时,i == 0处理程序永远不会被绑定。您实际上想要实现的是检查是否单击i > 0 a.remove。因此,该检查需要在处理程序内部,而不是在外部。

    $('.remove').click(function () {
      if (i > 0) {
        i--;
        $(this).closest('form').remove();
      }
    });

编辑 1:好的,看起来你在追求别的东西。您希望您的第一个form表单不会从页面中删除,因为此后您无法再添加新表单。问题是您i代表页面上表单的数量(减 1,因为您从 HTML 中已有的 1 个表单开始)而不是插入索引。有几种方法可以解决这个问题:

  • 给第一个表单一个额外的类,并在克隆表单中删除该类。然后,您可以检查单击的是否.removeform具有类似$(this).closest('form').hasClass('firstForm').
  • 仅手动将.remove链接添加到动态生成的表单。您可以构建一个模板元素,将其存储在一个变量中,然后将克隆附加到新表单中。
  • 检查被点击form的索引。.remove如果是第一个,请不要删除它。

编辑 2:好的,所以您实际上并不关心第一个表单是否被删除,您只想确保至少有一个表单仍在页面上。这就是为什么您要跟踪表格的数量。说真的,真的很混乱。如果您至少解释一下您对代码的推理是什么,这会有所帮助,评论不是事后的想法!

无论如何,您应该对我的初始修复有足够的了解(在编辑之上)。

于 2013-01-30T12:05:24.953 回答
0

将jquery更改为此并尝试

$('document').ready(function () {
       var i = 0;
      $('.remove').click(function () {
        if (i > 0) {
          i--;
        $(this).closest('form').remove();
        }
      });

    $('.clickme').click(function () {
      if (i < 5) {
        i++;
        $(".form1").last().clone(true, true).appendTo("body");
      } else {
        $(".form1")
      }
    });
  });
于 2013-01-30T12:10:08.520 回答