我没有找到我的问题的任何结果。
我有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操作