jQuery:Closest()行删除不起作用

时间:2018-07-27 05:28:56

标签: javascript jquery html sharepoint-online

我有一个脚本,该脚本添加了一组行,以使您可以在SharePoint列表表单中捕获其他访问者的信息。我有两个锚标记,一个用于添加,另一个用于删除。当我添加一个新的访问者时,它也可以工作,当我删除该访问者时,它仍然可以工作,但是如果我尝试再次添加,它将带回先前删除的行以及新添加的行。有谁知道我该如何解决这个问题?

我编写的脚本和源代码:

To https://github.com/everest-software/everest- 
web.git
! [rejected]        master -> master (non-fast- 
forward)
error: failed to push some refs to 
'https://github.com/everest-software/everest- 
web.git'
hint: Updates were rejected because the tip of 
your current branch is behind
hint: its remote counterpart. Integrate the 
remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git 
push --help' for details.

1 个答案:

答案 0 :(得分:1)

您应将事件附件移出addVisitor方法。

$('.remove').on('click', function () { ... }

还有

$('.add').on('click', function () { ... }

如果没有,则该应用程序将具有错误行为,因为每次代码调用方法addVisitor时,它将向事件添加一个新的处理程序,从而导致用户单击时多次调用回调函数类别为.add.remove的元素上。

因此,结果代码将是:

function addVisitor(sender) {
    var newVisitor = "<tr class='newVisitor'><td nowrap='true' valign='top' width='113px' class='ms-formlabel'><span class='ms-h3 ms-standardheader' ><nobr>Visitor name</nobr></span></td><td valign='top' width='350px' class='ms-formbody'><span dir='none'><input type='text'  maxlength='255'  title='Visitor name' class='ms-long ms-spellcheck-true'><br></span></td></tr><tr><td nowrap='true' valign='top' width='113px' class='ms-formlabel'><span class='ms-h3 ms-standardheader' ><nobr>Visitor surname</nobr></span></td><td valign='top' width='350px' class='ms-formbody'><span dir='none'><input type='text'  maxlength='255'  title='Visitor surname' class='ms-long ms-spellcheck-true'><br></span></td></tr><tr><td nowrap='true' valign='top' width='113px' class='ms-formlabel'><span class='ms-h3 ms-standardheader' id='Visitor_x0020_email'><nobr>Visitor email*</nobr></span></td><td valign='top' width='350px' class='ms-formbody'><span dir='none'><input type='text' value='' maxlength='255'  title='Visitor email Required Field' style='ime-mode : ' class='ms-long ms-spellcheck-true'><br></span></td></tr><tr style='display:none;' class='vReg'><td nowrap='true' valign='top' width='113px' class='ms-formlabel'><span class='ms-h3 ms-standardheader' id='Vehicle_x0020_registration'><nobr>Vehicle registration</nobr></span></td><td valign='top' width='350px' class='ms-formbody'><span dir='none'><input type='text' value='' maxlength='255' title='Vehicle registration' style='ime-mode : ' class='ms-long ms-spellcheck-true'><br></span></td>" + addBtn + "</tr>";

    $(newVisitor).insertAfter(sender);
    if (hideReg)
        $('.vReg').hide();
    else
        $('.vReg').show();       
}

function removeVisitor(sender) {
    var rowPos = $(sender).index();
    $(sender).remove(); // remove current
   // $('.ms-formtable tr').eq(rowPos - 1);
    for (var i = 1; i<=4; i++) {
        $($('.ms-formtable tr')[rowPos - i]).remove();
    }            
}


$('.add').on('click', function () {
    var sender = $(this).closest('tr')[0];
    $(this).hide();
    addVisitor(sender);
    $('.add').hide();
    $('.add:last').show();

});

$('.remove').on('click', function () {
    var sender = $(this).closest('tr')[0];
    $(this).hide();
    $('.add').hide();
    removeVisitor(sender);
    $('.add:last').show();
});