Я пытаюсь использовать триггер add_to_cart WooCommerce для запуска всплывающего окна при добавлении определенных продуктов в корзину. До сих пор мне удалось:
jQuery('body').on('added_to_cart',function() { alert("testing!"); });
Это показывает окно предупреждения, когда какой-либо продукт добавляется в корзину. Тем не менее, я хотел бы, чтобы предупреждение отображалось только для определенных категорий. Но как я могу проверить, к какой категории относится товар, добавленный в корзину?
Источник для добавления в корзину: https://github.com/woothemes/woocommerce/blob/master/assets/js/frontend/add-to-cart.js
И этот триггер в этом вопросе:
$( document.body ).trigger( 'added_to_cart', [ fragments, cart_hash, $thisbutton ] );
Поэтому я столкнулся с этой проблемой, и исправление довольно простое.
Ваша функция действительно правильная, ее просто нужно обернуть в функцию .ready()
.
Ваш код будет выглядеть так:
jQuery(document).ready(function($){ $('body').on( 'added_to_cart', function(){ alert("testing!"); }); });
Предполагая, что вы используете структуру html по умолчанию WooCommerce, это должно быть полезно вам.
Я протестировал его, запустив его через консоль Chrome на демонстрационной странице Storefront, которая находится здесь: http://demo2.woothemes.com/storefront/shop/ . Он отображает предупреждающее сообщение только в том случае, если в корзину добавляется продукт «радио», он находит категорию из классов родительского <li>
для продукта.
$ = jQuery; var lastCategory; $('body').on('added_to_cart',function() { if(lastCategory === 'radios'){ alert('a radio was added!'); } }); $('.add_to_cart_button').on('click',function() { lastCategory = $(this).closest('li').attr('class').split('product-cat-')[1].split(' ')[0]; });