我的if (i>0)
声明无效,任何建议为什么不?
我希望它能阻止我的初始形式盒子对它做出反应
$('.remove').click(function() if
i = 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>
答案 0 :(得分:2)
在点击功能中使用语句并添加&&
之类的逻辑运算符以获得准确的结果。
$('.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");
}
});
答案 1 :(得分:2)
再看看你的代码:
if (i > 0) {
$('.remove').click(function () {
i--;
$(this).closest('form').remove();
});
}
这将仅在.remove
时将事件处理程序绑定到所有i > 0
元素。在DOM就绪时,i == 0
因此处理程序从不绑定。您实际想要实现的是在点击i > 0
时检查.remove
是否。因此,该检查需要在内部处理程序,而不是在外部。
$('.remove').click(function () {
if (i > 0) {
i--;
$(this).closest('form').remove();
}
});
编辑1:好吧,好像你还在追求其他东西。您希望第一个form
不会从页面中删除,因为您不能再添加新表单了。问题是您的i
代表页面上的表单数量(减去1,因为您从HTML中已有1个表单开始),而不是插入索引< / em>的。有几种方法可以解决这个问题:
.remove
是否是form
的孩子,该类与$(this).closest('form').hasClass('firstForm')
类似。.remove
链接手动添加到动态生成的表单中。您可以构建一个模板元素,将其存储在变量中,然后将克隆附加到新表单。form
的{{1}}的索引。如果是第一个,请不要将其删除。编辑2 :好的,所以您实际上并不关心是否删除了第一个表单,您只是想确保至少有一个表单仍在页面上。这就是你跟踪表格数量的原因。说真的,真的很混乱。如果你至少解释一下你的代码的推理是什么有帮助,评论不是事后的想法!
无论如何,你应该有足够的初始修复(在编辑之上)。
答案 2 :(得分: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")
}
});
});