【问题标题】:Can't change text of a Jquery button after loading animation加载动画后无法更改 Jquery 按钮的文本
【发布时间】:2016-03-28 14:12:52
【问题描述】:

我在 ajax 请求 (.button('loading')) 的按钮上使用加载动画。请求完成后,我拨打.button('reset')

我想在重置后更改按钮的文本 (.html('hello')),但它又变回了第一个状态。如果我调试,我可以看到它更改为新值,然后立即更改回来。

$("#myButtons .btn").click(function() {
  $(this).button('loading').delay(1000).queue(function() {
    $(this).button('reset');
    $(this).html('Hello');
    $(this).dequeue();
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap-theme.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<div id="myButtons">
  <button type="button" class="btn btn-danger">Danger</button>
</div>

编辑;这是一个 sn-p 示例,真正的重置是在 Ajax 成功调用中

在我的代码中是这样的:

<button type="button" id="230" class="btn causes btn-danger" data-loading-text="<i class='fa fa-circle-o-notch fa-spin'></i>">Non</button>


$('.causes').click(function () {
    $(this).button('loading');
    ChangeStatus(event.target.id)

});

function ChangeStatus(id) {
    var idCause = id;
    var trouve = true;
    var classe = "btn-success";
    var texte = "Oui";
    if ($("#" + idCause).hasClass("btn-success")) {
        trouve = false;
        classe = "btn-danger";
        texte = "Non";
    }


    $.ajax({
        url: '/BREQ/Cause/ChangeCauseStatus',
        data: { 'idCause': idCause, 'trouve': trouve },
        type: "post",
        cache: false,
        success: function (savingStatus) {
            if (savingStatus == 1) {

                $("#" + idCause).button('reset');
                $("#" + idCause).removeClass("btn-danger");
                $("#" + idCause).removeClass("btn-success");
                $("#" + idCause).addClass(classe);
                $("#" + idCause).html(texte);
            } else {
                alert("Problème avec la sauvegarde");
            }
        },
        error: function (xhr, ajaxOptions, thrownError) {

        }
    });
}

【问题讨论】:

    标签: jquery html twitter-bootstrap


    【解决方案1】:

    根据我的理解,根据你的解释,看看这是否能解决你的问题 a jsfiddle example

    您需要使用 $(element).text() JQuery 属性

    $('.resetButton').click(function(){
    var butn = $(this);
    butn.text('loading');
    
       // lets assume your ajax request will take 2 seconds to resolve 
       myVar = setTimeout(function(){
         butn.text('Reset'); // after you get the response change the button text back to "Reset"
      }, 2000)
    })
    

    【讨论】:

    • 如果你只是改变文本,它确实有效,但我使用微调器动画,这就是我使用.button('loading')的原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-13
    • 2019-12-21
    • 2012-05-24
    • 1970-01-01
    • 2013-02-27
    相关资源
    最近更新 更多