#javascript #php #jquery #wordpress
#javascript #php #jquery #wordpress
Вопрос:
Я пытаюсь загрузить функцию call_ajax_add_to_quotelist
с помощью кнопки со следующим кодом:
$cartlink .= '<a class="add_to_cart button alt" href="javascript:void(0);" onclick="call_ajax_add_to_quotelist(add_to_quotelist_ajax_url,'.$product->id.');" '.$style.'>'.$label.'</a>';
Приведенный выше код нормально загружается в источнике представления, однако при нажатии он отображается мертвым без ошибки консоли. Я загрузил js
файл в функцию (он принадлежит другому плагину. Я взламываю плагин WP с помощью тех же действий другого плагина)
Загрузка скрипта:
$quotePluginJSUrl = site_url().'/wp-content/plugins/dvin-wcql/js/dvin_wcql.js';
?>
<script src="<?php echo $quotePluginJSUrl; ?>"></script>
<?php
Комментарии:
1. Попробуйте вызвать это, чтобы увидеть, является ли это щелчком или проблемой функции. console.log(«щелкнул!»);
2. Вы не закрыли привязку
3. Я предположил, что нам не хватает кода.
4. Теперь, когда вы закрыли привязку и все еще не работаете. Пожалуйста, опубликуйте
call_ajax_add_to_quotelist
функцию5. Глупый вопрос, но вы активировали плагин?
Ответ №1:
Я бы сначала проверил, call_ajax_add_to_quotelist
действительно ли это функция в консоли JavaScript, и если add_to_quotelist_ajax_url
это правильное значение.
Кроме того, рекомендуется не использовать onclick
. Я рекомендую использовать jQuery event binder .on()
.
Объяснение.:
<?php
$cartlink .= "<a class='add_to_cart button' data-id='{$product->id}'
href='javascript:;' {$style}>{$label}</a>";
// ... more products
?>
// **one** <script> after all products
<script>
jQuery(window).on('click', '.add_to_cart.button', function() {
call_ajax_add_to_quotelist(add_to_quotelist_ajax_url, $(this).data('id');
}
</script>
Комментарии:
1. Полностью согласен с использованием
data-
.2. Спасибо, как бы то ни было, ваш скрипт выдает мне пару неожиданных токенов; ошибки
3. @Debflav Мне жаль, но я все еще не понимаю, каким он должен быть
4. @JessMcKenzie Я немного изменил свой код. Возможно, ваши ошибки теперь исчезли. Кроме того, вы сделали проверку, о которой я писал в первую очередь?
5. @HerrSerker Не показывает редактирование, и да, я сделал и его функцию 🙂
Ответ №2:
Закройте привязку
<a>...</a>
Ответ №3:
поскольку вы добавляете привязку динамически, вам необходимо использовать .addEventListener
, если вы используете JS или делегирование событий, если вы используете jQuery
например
$('.button').on('click',function(){
call_ajax_add_to_quotelist(add_to_quotelist_ajax_url,'.$product->id.');
});
Кроме того, вы не закрыли тег привязки в своем коде, что может вызвать у вас некоторые проблемы:
$cartlink .= '<a class="add_to_cart button alt" href="javascript:void(0);" '.$style.'>'.$label.'</a>'
Комментарии:
1. 1 для объяснения, но
'.$product->id.'
предполагается, что это PHP-код. Это не сработало бы.