首页 > 解决方案 > 如何修复删除下拉框中的元素(Materialize)

问题描述

下拉框未按预期删除。

Materialize 从 0.97 版迁移到 1.0.0 版后,该功能无法正常工作。仅删除下拉框中的文本,而不是完整的元素。

M.AutoInit();

function removeEdit() {
    var el = document.getElementById("edit");
    el.parentNode.removeChild(el);
}
<html>
<head>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
</head>

<body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
</body>
<!-- Record actions -->
  <ul id="actions" class="dropdown-content">
    <li><a href="#" id="edit" onclick="alert('edit')" class="black-text">Edit</a></li>
    <li><a href="#" id="delete" onclick="alert('delete')" class="black-text">Delete</a></li>
  </ul>

 <button type="button" onclick="removeEdit()">Remove element edit</button>
  
  <table class="bordered">
	<thead class='t-h'>
	  <tr class="tr-h" >
        <th>Column 1</th>
        <th>Column 2</th>
        <th>Column 3</th>
      </tr>
    </thead>
    <tbody class='t-body'>
      <tr id="1" class="tr-d dropdown-trigger" href="#" hover="false" data-target="actions">
	    <td>Row 1, column 1</td>
	    <td>Row 1, column 2</td>
	    <td>Row 1, column 3</td>
      </tr>
      <tr id="2" class="tr-d dropdown-trigger" href="#" hover="false" data-target="actions">
        <td>Row 2, column 1</td>
        <td>Row 2, column 2</td>
        <td>Row 2, column 3</td>
      </tr>
    </tbody>
  </table>
</html>

标签: javascriptmaterialize

解决方案


removeEdit函数中,el代表 selected<a>所以el.parentNode代表 selected <li>

当您使用el.parentNode.removeChild(el)时,这意味着删除 selected<li>的子项,因此它会删除<a>标签。

改变 :

el.parentNode.removeChild(el);

到 :

el.parentNode.remove();

它会删除 selected <li>


推荐阅读