使用jquery添加和删除div不起作用

时间:2014-06-19 07:11:56

标签: javascript jquery

我使用一个简单的脚本来使用jquery添加和删除div。但它不起作用。 是否需要包含任何文件?谁能帮我。

这是我的代码

<html>    
    <head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script language="javascript">    
    $(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;
        });
});
    </script>
</head>
<body>
<h2><a href="#" id="addScnt">Add Another Input Box</a></h2>    
<div id="p_scents">
    <p>
        <label for="p_scnts"><input type="text" id="p_scnt" size="20" name="p_scnt" value="" placeholder="Input Value" /></label>
    </p>
</div>    
</body>
</html>

4 个答案:

答案 0 :(得分:1)

从jquery 1.7弃用

.live()。在jquery中使用.on()而不是.live()

答案 1 :(得分:0)

试试这个:

$('#addScnt').on('click', function() {
            $(scntDiv).append('<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>');
                i++;
                return false;
        });

    $(document).on('click','#remScnt', function() { 
            if( i > 2 ) {
                    $(this).parent().remove();
                    i--;
            }
            return false;
    });

答案 2 :(得分:0)

您的代码实际上有2个错误:

  1. .live()在您使用
  2. 的jQuery版本中不再可用
  3. 你的javascript中有一个未终止的字符串文字
  4. 您需要更改&#39; live()&#39;到&{39; on()&#39;,并确保您要附加到scntDiv的HTML字符串没有任何换行符:

    $(function() {
        var scntDiv = $('#p_scents');
        var i = $('#p_scents p').size() + 1;
    
        $('#addScnt').on('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="#" class="remScnt">Remove</a></p>').appendTo(scntDiv);
            i++;
            return false;
        });
    
        $('#p_scents').on('click', '.remScnt', function() { 
            if( i > 2 ) {
                $(this).parents('p').remove();
                i--;
            }
            return false;
        });
    });
    

    为了删除&#39;按钮继续工作,你必须使用类(因为这些链接中有超过1个添加到DOM)。 我将ID属性更改为类属性,我也更改了

    $('#remScnt').live('click', function() { 
    

    进入

    $('#p_scents').on('click', '.remScnt', function() { 
    

答案 3 :(得分:0)

我已经重构了一些代码来跟踪HTML:

<body>
<h2><a href="#" id="addScnt">Add Another Input Box</a></h2>

<div id="p_scents">
    <p>
        <input type="text" id="p_scnt" size="20" name="p_scnt" value="" placeholder="Input Value" />
    </p>

</div>

</body>

并遵循Javascript:

$(function() {
    var scntDiv = $('#p_scents');
    var i = $('#p_scents p').size();

    $("#addScnt").on("click",function(){
        i++;
        $('<p><input type="text" id="p_scnt'+i+'" size="20" name="p_scnt_' + i +'" value="" placeholder="Input Value" ><a href="#" class="remScnt">Remove</a></p>').appendTo(scntDiv);
    });

    $("#p_scents").on("click",".remScnt", function(){
        // items which need to be deleted are encapsulated within the parent item. You can use parent() to remove everything.
        $(this).parent().remove();
        i--;
    });
});

您可以在此处查看一个有效的示例:http://jsfiddle.net/u7QWA/36/