关于Javascript& amp;的2个问题jQuery的

时间:2016-02-06 05:21:57

标签: javascript jquery

请查看下面的代码。此功能用于在用户单击按钮时添加更多文本输入。我不理解两件事。

  1. 为什么我们需要这个? var i = $('#p_scents p').size() + 1;我不明白它的用途。我测试并看到只要您定义var i,该功能仍然有效。我不确定此处是否需要$('#p_scents p').size() + 1;

  2. 两个函数中为什么return false;

  3. 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;
        });
    });
    

2 个答案:

答案 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