Jquery 执行函数 第三方函数结束后

Jquery Execute function After third party function ends

本文关键字:函数 结束 第三方 Jquery 执行      更新时间:2023-09-26

我没有找到我的问题的任何结果。

我有Prestashop 1.5.6,我需要在块车添加产品后执行我的jQuery函数。

BlockCart 和我的代码以相同的事件开头,据我所知,解绑禁用其他处理程序事件,如何在页脚代码中重新启动解绑?

所以我的代码不起作用,因为块车首先启动

//---------BlockCart Code---------
    overrideButtonsInThePage : function(){
    //for every 'add' buttons...
    $('.ajax_add_to_cart_button').unbind('click').click(function(){
        var idProduct =  $(this).attr('rel').replace('nofollow', '').replace('ajax_id_product_', '');
        if ($(this).attr('disabled') != 'disabled')
            ajaxCart.add(idProduct, null, false, this);
        return false;
    });
    //for product page 'add' button...
    $('#add_to_cart input').unbind('click').click(function(){
        ajaxCart.add( $('#product_page_product_id').val(), $('#idCombination').val(), true, null, $('#quantity_wanted').val(), null);
        return false;
    });

//-------- Footer code--------
$('.button.ajax_add_to_cart_button.exclusive, .button.ajax_add_to_cart_button.btn.btn-default').on('click',function(){
    var id_product = $(this).attr('data-id-product');
    myfunction(id_product);
});

是否可以检测块车何时结束脚本而不使用回调函数编辑块车模块?

谢谢!

最后的结果是覆盖了blockCart函数。

我在我的js中复制了overrideButtonsInThePage以覆盖它,并将我的代码添加到事件中。

完美工作

根据块车的功能,您可以尝试:

//-------- Footer code--------
$('.button.ajax_add_to_cart_button.exclusive, .button.ajax_add_to_cart_button.btn.btn-default').click(function(){
    var id_product = $(this).attr('data-id-product');
    setTimeout(function() { myfunction(id_product); }, 0);
});

这将导致您的函数在现有堆栈完成执行后执行。您可以在为什么 setTimeout(fn, 0) 有时有用?中了解有关此操作的更多信息。仅当块车处理程序是同步的时,这才有用。

实际上,您可以使用$.ajaxComplete(); and .ajaxStart()来监视 ajax 调用

http://api.jquery.com/ajaxcomplete/

您可以做的是比较 ajax 被发送到的 url。添加到购物车 URL 预先编码了 GET 参数,因此将其与其他 ajax 调用区分开来并不难。然后,在$.ajaxComplete();上,您应该比较响应结果(确定它是成功的),然后执行您的函数。这样你就不会修改任何东西,你只会观察ajax操作