使用jquery动态添加和删除div

时间:2017-05-17 22:05:22

标签: javascript jquery twitter-bootstrap

大家好我已经坚持了。添加工作正常,删除不起作用。我可以提醒数字,但选择不起作用。我刚刚添加了删除功能。  我已修改它,它的工作原理谢谢

    <script>
            $(function () {
                // Handler for .ready() called.
                lastPassengerID = $('.passengersInsert').children().last().attr('class');
            });
            //addPassenger();
// A $( document ).ready() block.
            function addPassenger() {
                var passengers = $('.passengersInsert').children().length;
                if (passengers > 1) {
                    //var lastPassengerID = $('.passengersInsert').children().last().attr('class');
                    //var id = $('.passengersInsert').children().attr('id');
                    lastPassengerID = parseInt(lastPassengerID.replace('P', ''));
                } else {
                    lastPassengerID = 0;
                }

                if (passengers === 0) {
                    //alert('passengers' + passengers);
                    $(".checkbox1").remove();
                }

                var seqNo = passengers + 1;
                if (seqNo > 1) {
                    var defaultText = "PASSENGER NO " + seqNo + "";
                } else {
                    defaultText = "LEAD PASSENGER";
                }

                //alert('last ID' + lastPassengerID);

                var template = '<div class="P' + seqNo + '"><div id="' + seqNo + '" class="panel panel-default"><div class="panel-heading">' + defaultText + '<div class="col-xs-2 row pull-right" id="addRemove"><input id="neg" class="col-xs-5 pull-left" type="button" value="-" onclick="removePassenger('+ seqNo +')"> <input id="pos" class="col-xs-5" type="button" value="+" onclick="addPassenger()"></div></div><br/><div class="row">';
                template += '<div id="C' + seqNo + '" class="col-xs-12" style="/*border:1px solid blue;*/"><div class="col-xs-12" style="/*border: 1px solid green;*/">';
                template += '<div class="row"><em><h5 class="col-xs-12" >Contact Details</h5></em></div><br/></div>';
                template += '<div class="col-xs-12"><div class="col-sm-6 col-xs-12 pull-left" style="/*border: 1px solid red;*/"><div class="input-group col-xs-12"><span class="input-group-addon"><span class="glyphicon glyphicon-user"></span></span><input type="text" class="form-control" placeholder="First Name" name="FName' + seqNo + '"></div></div>';
                template += '<div class="col-sm-6 col-xs-12 pull-right"><div class="input-group col-xs-12"><span class="input-group-addon"><span class="glyphicon glyphicon-user"></span> </span><input type="text" class="form-control" placeholder="Last Name" name="SName' + seqNo + '"></div></div>&nbsp;</div><div class=" col-xs-12">';
                template += '<div class="row"><div id="C' + seqNo + '" class=" col-xs-12"><div class="col-xs-12"><div class="row"><em><h5 class="col-xs-12">Address</h5></em></div><div class="checkbox' + seqNo + '"><label class="row col-xs-12 "><input type="checkbox" class="checkbox' + seqNo + ' col-xs-1" name="PAddress' + seqNo + '" id="PAddress' + seqNo + '" value=""> Same as Lead Passenger </label></div></div></div></div>';
                template += '<div class="row"><div class="col-xs-12"><div class="col-sm-6 col-xs-12 pull-left"><div class="input-group col-xs-12"><span class="input-group-addon"><span class="glyphicon glyphicon-envelope"></span></span><input type="number" class="form-control" placeholder="Door No." name="DoorNumber' + seqNo + '"></div></div>';
                template += '<div class="col-sm-6 col-xs-12"><div class="input-group"><span class="input-group-addon"><span class="glyphicon glyphicon-envelope"></span></span><input type="text" class="form-control" placeholder="Street Name" name="Road' + seqNo + '"></div></div></div></div><br/>';
                template += '<div class="row"><div class="col-xs-12"><div class="col-sm-6 col-xs-12"><div class="input-group"><span class="input-group-addon"><span class="glyphicon glyphicon-envelope"></span></span><input type="text" class="form-control" placeholder="Town /City" name="Town' + seqNo + '"></div></div>';
                template += '<div class="col-sm-6 col-xs-12"><div class="input-group"><span class="input-group-addon"><span class="glyphicon glyphicon-envelope"></span></span><input type="text" class="form-control" placeholder="Post Code /Zip Code" name="PostCode' + seqNo + '"></div></div></div></div><br/>';
                template += '<div class="row"><div class="col-xs-12"><div class="col-sm-6 col-xs-12"><div class="input-group"><span class="input-group-addon"><span class="glyphicon glyphicon-envelope"></span></span><input type="text" class="form-control" placeholder="County/State" name="County' + seqNo + '"></div></div><div class="col-sm-6 col-xs-12">';
                template += '<div class="input-group"><span class="input-group-addon"><span class="glyphicon glyphicon-globe"></span></span><input type="text" class="form-control" placeholder="Country" name="Country' + seqNo + '"></div></div></div></div><br/>';
                template += '<div class="row"><div class="col-xs-12"><div class="col-sm-6 col-xs-12"><div class="input-group"><span class="input-group-addon"><span class="glyphicon glyphicon-earphone"></span></span><input type="text" class="form-control" placeholder="Contact No" name="Tel' + seqNo + '"></div></div>';
                template += '<div class="col-sm-6 col-xs-12"><div class="input-group"><span class="input-group-addon"><span class="glyphicon glyphicon-envelope"></span></span><input type="text" class="form-control" placeholder="Email" name="Email' + seqNo + '"></div></div></div></div><br/></div></div></div></div></div>';

                //$('.passengersInsert').append(template);
                $(template).appendTo('.passengersInsert');
                $(".checkbox1").remove();
                $('.P' + seqNo).css('border', '1px solid red');
            }
            //var id = $('div').attr('id');
            function removePassenger(seqNo) {
                $('.P' + seqNo).remove(); /*nothing happens*/
                $('.P' + seqNo).css('border', '1px solid blue');/*this highlights the '-' buttons margin. instead of the expected element.*/
            }
        </script>

1 个答案:

答案 0 :(得分:0)

您的代码中存在两个问题:

1) 变量lastPassengerIDaddPassenger函数内定义,因此绑定到其作用域。变量addPassenger函数之外,因此在undefined函数内removePassenger可用。

要在removePassenger函数内部使用它,您需要在范围内声明变量,两个函数都是其中的一部分,或者只是在打开addPassenger函数之前将其声明为全局变量

2) removePassenger函数的第一行确实包含编码错误:

$('P+lastPassengerID+').remove();

应该是

$('.P'+lastPassengerID).remove();

所以lastPassengerID的内容实际上与字符串&#34; P&#34;这会产生一个有效的选择器。此外,您需要在选择器的开头添加一个点(.),以将选择器标识为类选择器,以便它实际匹配一个类。