JS не срабатывает при щелчке

#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-код. Это не сработало бы.