请查看下面的代码。此功能用于在用户单击按钮时添加更多文本输入。我不理解两件事。
为什么我们需要这个? var i = $('#p_scents p').size() + 1;
我不明白它的用途。我测试并看到只要您定义var i
,该功能仍然有效。我不确定此处是否需要$('#p_scents p').size() + 1;
。
两个函数中为什么return false;
?
http://jsfiddle.net/jaredwilli/tzpg4/4/
$(function() {
var scntDiv = $('#p_scents');
var i = $('#p_scents p').size() + 1;
$('#addScnt').live('click', function() {
$('<p><label for="p_scnts"><input type="text" id="p_scnt" size="20" name="p_scnt_' + i +'" value="" placeholder="Input Value" /></label> <a href="#" id="remScnt">Remove</a></p>').appendTo(scntDiv);
i++;
return false;
});
$('#remScnt').live('click', function() {
if( i > 2 ) {
$(this).parents('p').remove();
i--;
}
return false;
});
});
答案 0 :(得分:1)
i
看起来正在跟踪页面上的项目数量。它被初始化以匹配首次加载时页面上有多少项。这就是i = $('#p_scents p').size() + 1;
的目的。
return false
会导致点击的默认行为不会发生。这很重要,例如,如果您在链接上有一个点击处理程序,并且您不想点击它们转到该链接的href
。
答案 1 :(得分:1)
var i = $('#p_scents p').size() + 1;
如果您使用var
i
为动态添加内容提供唯一ID,则上述代码必须有意义,因为ID应该始终是唯一的(那么您需要更改size()的选择器。
说明:
size()
会返回您在页面(例如1)
#p_scents p
(selector)
现在您要向其添加1
,以便var i
成为2
现在,为您添加的新输入类型文字由唯一名称"p_scnt_' + i +'"
分配,即p_scnt_2
。
所以我所说的是DOM应该始终具有唯一ID,因此您应该使用var i
值来提供唯一ID。
喜欢这个
$('<p><label for="p_scnts"><input type="text" id="p_scnt_' + i +'" size="20" ...
在您的代码中,您使用了i
变量来提供唯一的name
。
关于return false;
,它根本不需要,因为在click
事件之后您不想要遵循的代码中没有任何内容。
您可以在onclick事件中使用return false
来阻止浏览器处理执行堆栈的其余部分,其中包括跟随href属性中的链接。
除此之外,您无需在删除按钮if( i > 2 ) {
中查看click
,因为对于页面上的每个删除按钮,值总是大于2
。
由于在动态添加删除按钮时,您始终会从var i
2
值