【问题标题】:how to return a button after DOM with jquery如何使用jquery在DOM之后返回一个按钮
【发布时间】:2020-05-26 10:23:59
【问题描述】:

我想在这里问我尝试进行 HTML 操作,当单击按钮时,它将向 ajax 发送数据,在 ajax 给出响应之前,按钮将被禁用,这里的问题是我想恢复按钮到了开头怎么办? 这是我的 HTML

<button
  type="button"
  href=""
  id="bank"
  query-string="{{$assessment['user_id'].'&type=bank&name=american'}}"
  data-toggle="tooltip"
  data-placement="bottom"
  title=""
  data-original-title="Detail Mutation Bank BCA"
  class="btn btn-soft-dark mt-1 mr-1"
>
  mutation
</button>

<script>
  var bank = $("#bank").attr("query-string");
  var btnText = $(this);
  var btn = $(this);
  $(btn)
    .html(
      `<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>`
    )
    .attr("disabled", true);

  $.ajax({
    type: "get",
    url: "{{route('getDescription')}}" + "?id=" + bank,
    dataType: "json",
    success: function(data) {
      console.log(data);
      if (data.status == "error") {
        createAlert(data.message, "danger");
      } else {
        window.open(data.url, "_blank");
      }
    }
    //here i want to restore button
  });
</script>

【问题讨论】:

  • 在变量中保留按钮的副本,然后将相同的按钮内容分配给您的 btn 变量..但这将是最肮脏的解决方案..我建议您保留 2 个按钮。 . 一个是你拨打ajax时需要的内容,一个是原始按钮,这样你就可以相应地隐藏和显示这些按钮了..
  • 您应该在ajax请求的成功和错误回调中启用按钮。

标签: javascript jquery laravel jquery-ui dom


【解决方案1】:

您应该将之前的 HTML 内容存储到 rootTextOfButton 值,如

var rootTextOfButton = $(this).html();

然后就可以恢复喜欢了

btn.html(rootTextOfButton); //here i want to restore button

此外,您还应该删除 disabled 属性,例如 btn.removeAttr("disabled");

完整代码

var rootTextOfButton = $(this).html();

var  btn = $(this);
        $(btn).html(`<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>`).attr("disabled", true);
    $.ajax({
    type:"get",
    url:"{{route('getDescription')}}"+"?id="+bank,
    dataType:"json",
    success:function(data){
        console.log(data);
            if(data.status=='error'){
                createAlert(data.message, "danger");
            }else{
                window.open(data.url, '_blank');
            }
         btn.html(rootTextOfButton); //here i want to restore button
         btn.removeAttr("disabled");
        }
    });

【讨论】:

  • //here i want to restore button。这会给他一个错误。您将它排除在ajaxsuccess 功能之外。请按要求更正..
  • @Guruprasad Rao 更新了,请看一下:)
  • 看起来不错.. :) 您还可以按照上述 cmets 之一的建议添加 error 场景来处理负面情况..
  • 我的荣幸..快乐编码..+1 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-04
  • 1970-01-01
相关资源
最近更新 更多