【问题标题】:Chrome only updates with jquery.html() when debugging and hitting breakpointChrome 仅在调试和命中断点时使用 jquery.html() 更新
【发布时间】:2014-06-22 22:02:53
【问题描述】:

我的网页中有以下 sn-p。假设当用户单击页面上的“购买”按钮时,会临时更改容器的内部 HTML 内容。

//////////
 // Add items to basket //
 //////// 
function addToBasket(pageId, itemId, produktNumber, domElem) {
        var tempHtml = $(domElem).html();
        $(domElem).html('<i class="fa fa-refresh fa-spin"></i>');
        $(domElem).attr('disabled', true);
        // Update the cart 
        updateCart('/default.aspx?id=' + pageId + '&amp;productid=' + itemId + '&amp;quantity=' + $('#antal_' + produktNumber).val() + '&amp;cartcmd=add', undefined, false, domElem);
        $(domElem).html(tempHtml);
        $(domElem).removeAttr('disabled'); }

函数中的第二行仅在我调试时在 Chrome 中触发...有谁见过类似的问题吗?

它在 IE 和 FF 中效果很好 - 所以我现在很困惑......

** 已编辑 **

好的...所以我已经根据给出的建议编辑了脚本-但问题仍然存在:(实际上认为 ajaxComplete 应该修复它,但它没有... workingElement .html(''); 似乎在没有断点的情况下被跳过.. 并且仅在 Chrome 中...

function addToBasket(pageId, itemId, produktNumber, domElem) {
    var tempHtml = $(domElem).html();
    var workingElement = $(domElem);
    workingElement.html('<i class="fa fa-refresh fa-spin"></i>');
    workingElement.attr('disabled', true);
    $(document).ajaxComplete(function(){
        workingElement.html(tempHtml);
        workingElement.removeAttr('disabled');
    });
    // Update the cart 
    updateCart('/default.aspx?id=' + pageId + '&amp;productid=' + itemId + '&amp;quantity=' + $('#antal_' + produktNumber).val() + '&amp;cartcmd=add', undefined, false, domElem);
}

【问题讨论】:

  • 也许这个Link会帮助你
  • 看起来updateCart 可能是一个异步函数,所以$(domElem).html(tempHtml); 将立即执行;它不会等到任何异步操作 updateCart 启动完成。

标签: javascript jquery html google-chrome


【解决方案1】:

Anthony Grist 做对了……异步调用是问题所在

【讨论】:

    【解决方案2】:

    如果尚未包装,则需要在函数中实例化 jQuery:

    function addToBasket(pageId, itemId, produktNumber, domElem) { $(function() {
    
        // Your Code Here
    
    }); }
    

    【讨论】:

    • 为什么在页面加载完成后几乎肯定会调用的函数中需要一个 DOM 就绪处理程序?
    • 关键字是“几乎肯定”,你不知道jQuery是否被加载。
    • 不,我可以访问 jQuery,但事实上它是一个异步调用,因此它被“跳转”了
    猜你喜欢
    • 1970-01-01
    • 2010-10-18
    • 1970-01-01
    • 2013-03-13
    • 1970-01-01
    • 2014-04-12
    • 2011-10-30
    • 2012-03-04
    • 2013-08-09
    相关资源
    最近更新 更多