加载动态生成的按钮时,下拉内容未显示

时间:2017-10-05 09:01:35

标签: php jquery html ajax materialize

我对MaterialiseCSS有疑问。 我有一个html表,它有一个选项按钮,可以显示基于用户生成的动态选项。

这在第一次运行时(加载页面时)工作正常,但是当我使用AJAX重新加载表内容(包括按钮)时,下拉内容将不再显示。虽然按钮点击事件仍然被触发。

我尝试了多种解决方案,但这些都不适用于我的情况。

表(由php中的foreach循环生成的tbody内容):

<table class="table highlight">
<thead>
<tr>
    <th class="center-align">
        <input type="checkbox" id="checkAllUsers" class="checkToggle checkAllUsers"
               data-target="#boxUsers table tbody [type=checkbox]">
        <label for="checkAllUsers"></label>
    </th>
    <th>Username</th>
    <th class="hide-on-small-only">Email</th>
    <th style="text-align:center;" class="hide-on-small-only">Allowed</th>
    <th style="text-align:center;">Employee</th>
    <th>Action</th>
</tr>
</thead>
<tbody class="usertablebody">
  <tr>
      <td class="center-align">
          <input type="checkbox" class="selectedUsers" name="u-1" id="u-1">
          <label for="u-1"></label>
      </td>
      <td>jGeluk</td>
      <td class="hide-on-small-only">jonah@example.com</td>
      <td style="text-align:center;">Yes</td>

      <td style="text-align:center;">No</td>
      <!-- ACTION BUTTON HERE -->
      <td>
          <div class="actions">
              <a class="dropdown-button showuseroptions btn-flat waves-effect" uid="1" href="#"
                 data-activates="showUserOptions">
                  <i class="large material-icons">more_vert</i>
              </a>
          </div>
      </td>
  </tr>
</tbody>

下拉内容:

<ul id="showUserOptions" class="dropdown-content main-dropdown lighten-2">
    <li><a href="#">Loading...</a></li>
</ul>

加载动态下拉内容(这在页面加载时没有任何问题):

$("body").on('click', ".showuseroptions", function(event) {
var uid = $(this).attr('uid');
var btn = this;;
toggleLoader();
jQuery.ajax({
    type: "POST",
    url: base_url + "ajax_admin_controller/fetch_user_options",
    dataType: 'text',
    data: {uid:uid},
    success: function(res) {
        if (res)
        {
            //"ul#showUserOptions"
            $("ul#showUserOptions").html(res);
        }
        toggleLoader();
    }
});


});

刷新表格功能:

function refreshUserTable()
{
    toggleLoader();
    jQuery.ajax({
        type: "POST",
        url: base_url + "ajax_admin_controller/fetch_users_table",
        dataType: 'text',
        success: function(res) {
            if (res)
            {
                $(".usertablebody").html(res);
                toggleLoader();
            }
        }
    });

}

使用

  

$(本).dropdown();

如文档中所述,没有任何效果。

我希望有人可以帮助我。

谢谢,

约拿

1 个答案:

答案 0 :(得分:0)

在ajax完成后调用下拉列表并附加html

Pillow-4.3.0-cp27-cp27m-manylinux1_x86_64.whl is not a supported wheel on this platform.

确保每个下拉列表都有唯一ID

更改

toggleLoader();
$('.showuseroptions').dropdown();