javascript - 使用 jquery 隐藏按钮不起作用

标签 javascript jquery

我在 Asp MVC 中有一个部分类,如下所示:

<div class="table-responsive">
  <table class="table" id="tbl_visitors" data-animate="fadeInRight">
    <thead>
      <tr>
        <th>
          @Html.DisplayNameFor(model => model.VisitorId)
        </th>
        <th>
          @Html.DisplayNameFor(model => model.FirstName)
        </th>
        <th>
          @Html.DisplayNameFor(model => model.LastName)
        </th>
        <th>
          @Html.DisplayNameFor(model => model.TicketId)
        </th>
        <th>
          @Html.DisplayNameFor(model => model.RequestStatus)
        </th>
        <th></th>
        <th></th>
      </tr>
    </thead>
    <tbody>
      @foreach (var item in Model) {
      <tr>
        <td>
          @Html.DisplayFor(modelItem => item.VisitorId)
        </td>
        <td>
          @Html.DisplayFor(modelItem => item.FirstName)
        </td>
        <td>
          @Html.DisplayFor(modelItem => item.LastName)
        </td>
        <td>
          @Html.DisplayFor(modelItem => item.TicketId)
        </td>
        <td>
          @Html.DisplayFor(modelItem => item.RequestStatus)
        </td>
        <td id="item_checkbox">
          @if (item.RequestStatus != "Pending") {
          <input id=@item.VisitorId checked="checked" class="use-this switch-toggle switch-flat-mini switch-toggle-flat" type="checkbox">
          <label for=@item.VisitorId></label>
          } else {
          <input id=@item.VisitorId class="use-this switch-toggle switch-flat-mini switch-toggle-flat" type="checkbox">
          <label for=@item.VisitorId></label>
          }
        </td>
        <th>
          <a href="javascript:void(0);" onclick="deletevisitor(@item.VisitorId, @item.TicketId ) ">Remove</a>
        </th>
      </tr>
      }
    </tbody>
  </table>
</div>
<div class="alignright" id="div_btn_approve">
  <button id="btn_approve_ticket" class="button button-border button-rounded button-green">Approve</button>
</div>

以及一个用于禁用“索引” View 中部分 View 中按钮的脚本,如下所示:

function getVisitorsOfApprovedTicket(ticketId, requestedBy, schedule) {
  var url = '/Member/GetVisitorViaTicketId?ticketId=' + ticketId;
  $("#div_approved_ticket_visitors").load(url);
  $("#hidden_created_by").val(requestedBy);
  //$("#btn_approve_ticket").prop( "disabled", true );
  $("#btn_approve_ticket").hide();
}

当我尝试通过创建脚本将其隐藏在部分 View 中时,它会隐藏按钮,但为什么当我调用部分 View 时它在索引 View 中不起作用?你能告诉我如何正确地做吗?谢谢。

最佳答案

因为 .load 尚未完成,并且您尝试 .hide() 一个不存在的元素:

function getVisitorsOfApprovedTicket(ticketId, requestedBy, schedule) {
  var url = '/Member/GetVisitorViaTicketId?ticketId=' + ticketId;
  // this is a async process
  $("#div_approved_ticket_visitors").load(url);
  $("#hidden_created_by").val(requestedBy);
  //$("#btn_approve_ticket").prop( "disabled", true );
  // you are trying to hide an element that is not present yet.
  $("#btn_approve_ticket").hide();
}

如果您想隐藏此 var url = '/Member/GetVisitorViaTicketId?ticketId=' + TicketId; View 内的元素。您需要先等待它加载才能继续:

function getVisitorsOfApprovedTicket(ticketId, requestedBy, schedule) {
  var url = '/Member/GetVisitorViaTicketId?ticketId=' + ticketId;
  // this is a async process
  $("#div_approved_ticket_visitors").load(url, function () {
    // this function is called after its done
    // here you can safely hide the element
    $("#btn_approve_ticket").hide();
  });
  $("#hidden_created_by").val(requestedBy);
  //$("#btn_approve_ticket").prop( "disabled", true );
}

希望有帮助

关于javascript - 使用 jquery 隐藏按钮不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46188601/

相关文章:

c# - getelementbyid().length 未定义?

javascript - 在将 <li> 元素添加到 <ul> 时应用淡入淡出效果

javascript - Handsontable 增加行标题宽度

javascript - Vue.js $.ajax() 文档准备好时动态表

php - 使用 php 和 MySQL 将数据获取到 jQuery UI availableTag

javascript - jQuery、CORS、JSON(无填充)和身份验证问题

javascript - 窗口加载函数完全加载图像吗?

jquery - 使用 jquery .css 的 div 的响应高度

javascript - 如何在先决条件检查后显示对话框?

java - 将 javascript 与 java 混合