javascript - 尝试使用 Jquery 删除时未删除子 Div

标签 javascript jquery html css asp.net

Clearing child div inside parent div,有很多答案,比如:

 $(".ChildDiv").html("");
 $('.ChildDiv > div').remove();
 $(".ChildDiv").html("");
 $("#ParentDiv").html("");
 $(".ChildDiv div").remove();
 $(".ChildDiv div").empty();
 $('.ChildDiv ').find('div').remove();

可能我已经列出了所有可能的删除 div 的方法,但即使使用了所有这些方法,我仍然无法清除 Parent Div 中的所有 div。让我解释一下我在做什么以及我需要什么。

场景:

我有两个容器 1,其中一个容器有输入搜索框,我可以在其中搜索输入员工姓名并选择几个员工 Ex。 5 并且可以使用“添加”按钮将这些员工移动到另一个容器 2,即“div”。

enter image description here

现在我单击报告按钮事件并在不同的 aspx 中获取这 5 个人的信息,现在如果我返回必须搜索另外 3 名员工的页面,当我再次单击“添加”按钮时,它应该只添加 3 名员工,而不是添加最后搜索的 5 + 3 名员工!!。

enter image description here

enter image description here

所以我在单击“报告”按钮后试图清除该 div 中的 5 名员工,当我使用 alert() 时它说它有 0 个元素,但是当我第二次添加它时,它附加了数据再次,我不需要。这是代码:

要记住的要点: 1.ParentDiv是container-2 2. ChildDiv是ParentDiv里面的child div(当我们点击“添加”按钮选择5名员工时动态追加

代码如下:

HTML:

 <table id="topTable">
    <tr>
        <td id="leftpane">
             <h4>Search for Employee by Name or Profile:</h4>
             <input type="text" id="EmployeeSearchBox" class="search-box" aria-multiselectable="true" />
             <select id="EmployeeList" size="20" multiple></select>
        </td>
        <td id="centerpane">
            <div> <input type="button" value="Add >>" class="AddButton" id="buttonAdd" /></div>                
            <div> <input type="button" value="Add All >>" class="AddButton" id="buttonAddAll" /></div>

        </td>
        <td id="rightpane">
             <h4>Selected Employees:</h4>
    <div id="ParentDiv"></div>
        </td>
    </tr>
</table>

运行报告按钮事件

 <input class="data" type="submit" name="cmdSubmit" value="Run Report" onclick="return FormValidate();"
                    onserverclick="RunReport" runat="server" id="Submit1" />

添加按钮点击: 将员工从 container-1 移动到 container-2。

 $(document).on('click', '#buttonAdd', function (e) {       

    $('#EmployeeList :selected').each(function (i, selected) {           
        myHash[$(selected).val()] = $(selected).text();
    });

    var myNode = $("#ParentDiv")[0];

    while (myNode.firstChild) {
        myNode.removeChild(myNode.firstChild);
    }
    for (var emp_id in myHash) {
     var emp =   $("#ParentDiv").append("<div class= ChildDiv id=" + emp_id + ">" + myHash[emp_id] + " <span class='close'>&times;</Span> </div>");            
    }  
    $('#EmployeeSearchBox').val("").trigger('input');  
});

单击“报告”按钮时,它应该清除 ParentDiv/ChildDiv 中的所有元素,这是我所做的,但它仍然没有清除它,一旦单击“报告”按钮事件,我如何解决/删除这些元素。

这是“报告”按钮事件的示例:

function FormValidate() {//Part of my other code
$(".ChildDiv").html("");
$('.ChildDiv > div').remove();
$(".ChildDiv").html("");
$("#ParentDiv").html("");
$(".ChildDiv div").remove();
$(".ChildDiv div").empty();
$('.ChildDiv ').find('div').remove();
  }

它们都不起作用,我觉得“添加”按钮事件存在问题,它存储数据的地方。

注意:

我不想清除员工列表数组,因为我想再次选择多个员工 Ex。我可以选择 2 名以字母“M”开头的员工,我可以搜索字母“L”的 2 名员工并添加这 2 名员工,容器应在单击“报告”按钮之前容纳 4 名员工。

如果我足够清楚,请告诉我。

控制台日志

enter image description here

最佳答案

我终于能够解决这个问题,我正面临着这个问题,我正在发布答案,现在它正在按我的需要工作。

 $(document).on('click', '#buttonAdd', function (e) {

    var div_count = $('#ParentDiv').find('div').length;
    if (div_count === 0) {
        myHash = []; // Clearing the hash, so that it can add fresh employees, if count == 0 in container- 2.
        $('#EmployeeList :selected').each(function (i, selected) {
            myHash[$(selected).val()] = $(selected).text();
        });
    }
    else { // If there are existing employees in container-2 then append few more. 
        $('#EmployeeList :selected').each(function (i, selected) {
            myHash[$(selected).val()] = $(selected).text();
        });
    }

    var myNode = $("#ParentDiv")[0];
    console.log(myNode);

    while (myNode.firstChild) {
        myNode.removeChild(myNode.firstChild);
    }
    for (var emp_id in myHash) {
        var emp = $("#ParentDiv").append("<div class= ChildDiv id=" + emp_id + ">" + myHash[emp_id] + " <span class='close'>&times;</Span> </div>");
        }
    $('#EmployeeSearchBox').val("").trigger('input');
});

我做了什么

由于我应该能够通过搜索追加多个员工,这是在“其他”部分处理的,如果我生成了“报告”,那么我将清除 Container-2。

当我返回页面搜索更多员工时,此时 Container-2 将没有任何员工,所以

var div_count = $('#ParentDiv').find('div').length;
if (div_count === 0) {
 myHash = [];
 //....
 }

将清除允许我添加新员工的数组,因此它解决了我的问题:)

感谢大家的支持。

关于javascript - 尝试使用 Jquery 删除时未删除子 Div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38418942/

相关文章:

javascript - 你如何使用 jQuery 选择一个特定的子 div?

javascript - 延迟按钮提交 Javascript

c# - 如何从 asp :TextBox when using MaxLength property? 中删除空格

javascript - Selebiun 爬虫超时问题 C#

javascript - 异步 NPM 模块不为数组中的每个项目执行 setTimeout

jquery - 如何在CSS中居中元素?

jquery 在 contenteditable div 中设置光标位置

javascript - 压入整个子数组

javascript - Typeahead Wait 发出多个请求,而不仅仅是最后一个

html - 我可以从列流中提取一些元素吗?