我的问题没有找到任何结果。
我有Prestashop 1.5.6,我需要在blockcart添加产品后执行我的jQuery函数。
BlockCart和我的代码以相同的事件开始,因为我知道unbind会禁用其他处理程序事件,如何在页脚代码中重新启动unbind?。
所以我的代码不起作用,因为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模块的情况下,可以检测到blockcart何时结束脚本?
谢谢!
答案 0 :(得分:1)
最后结果是覆盖了blockCart函数。
我将overrideButtonsInThePage的副本复制到我的js中以覆盖它,并在事件中添加我的代码。
完美运作
答案 1 :(得分:0)
根据blockcart功能的不同,您可以尝试:
//-------- 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);
});
这将导致您的函数在现有堆栈完成执行后执行。您可以在Why is setTimeout(fn, 0) sometimes useful?中详细了解其功能。只有当blockcart处理程序是同步的时,这才有用。
答案 2 :(得分:0)
您可以使用$.ajaxComplete(); and .ajaxStart()
http://api.jquery.com/ajaxcomplete/
您可以做的是比较发送ajax的网址。添加到购物车URL有预先编码的GET参数,因此区别于其他ajax调用并不困难。然后在$.ajaxComplete();
上你应该比较响应结果(确定它是成功的)然后执行你的功能。这样你就不会修改任何东西,你只需要观察ajax动作