Здравствуйте.
<script>
$('#shipping_method li input').click(function(){
$('#shipping_method li').removeClass('checked')
if(!$(this).is(":checked")) {
$(this).closest('li').addClass("checked");
}
});
</script>
Спасибо! А не подскажете еще куда его правильнее вставлять? 😉
А то я вставляю в файл form-checkout.php и результата нет… (
Ну я обычно вставляю в какой-нибудь js-файлик и подключаю к теме.
Попробуйте вставить так:
(function ($) {
$(document).ready(function () {
$('#shipping_method li input').click(function(){
$('#shipping_method li').removeClass('checked');
if(!$(this).is(":checked")) {
$(this).closest('li').addClass("checked");
}
});
});
})(jQuery);
Чтобы по-быстрому проверить исполняется ли что-то вообще можно добавить
console.log('test');
и глянуть вывод в консоли браузера, либо
alert('test')
в этом случае появится всплывающее окно.
Я так понимаю, что если у Вас этот код работает, то и у меня должен — woocommerce же одинаковый… но почему-то не работает ((
Я в js вообще слаб и не все понял из вышенаписанного… попробовал вставить код в js файлы темы — тоже нет результата… что же делать?
Я так понимаю, что если у Вас этот код работает, то и у меня должен — woocommerce же одинаковый… но почему-то не работает ((
Может и одинаковый, но у меня сейчас нет под рукой где проверить, поэтому я Вам написал код на основе той информации, что Вы предоставили :).
Возможно, способы доставки подгружаются динамически, тогда нужно использовать «.on»
(function ($) {
$(document).ready(function () {
$(document).on('click', '#shipping_method li input', function() {
$('#shipping_method li').removeClass('checked');
if(!$(this).is(":checked")) {
$(this).closest('li').addClass("checked");
}
});
});
})(jQuery);
чувствую что я похоже сам делаю что-то неправильно — уже столько вариантов разных перепробовал и не один не работает…((
Добрые люди подсказали наконец-то код:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script>
$(function(){
$('li').click(function() {
$(this).siblings().add(this).each(function(indx, el){
if ($('input',el)[0].checked) {
$(this).addClass('selected');
} else {
$(this).removeClass('selected');
} });
})
$("li input:checked").parent().click();
})
</script>
Возможно и приведенные выше варианты тоже были «рабочие», просто я их не туда вставлял… Обнаружил что не туда совершенно случайно «методом тыка». Я вставлял в файл form-checkout.php (что на мой взгляд совершенно логично, т.к. этот файл выводит конечную страницу регистрации), а «заработало» так: для способов доставки в cart-shipping.php, для способов оплаты в payment.php…
То что один и тот же скрипт вызывается на одной странице в разных местах, я считаю не правильно. Поэтому не считаю проблему до конца решенной.( Если кто разбирается в js и woocommerce, помогите пожалуйста.
И еще такой вопрос: зачем еще раз подключать <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>, разве в WordPress не подключен jquery по умолчанию (но без этого у меня не работает)?
И еще такой вопрос: зачем еще раз подключать
Новые вопросы нужно задавать в новой теме. Правила п2
По поводу вопроса. jQuery включен в дистрибутив WordPress, но загружается только по требованию, если, например, его вызвали напрямую
wp_enqueue_script( 'jquery' );
либо указали в зависимостях.
Если jquery подключен на странице несколько раз, то следует оставить только один.
Не хочу нарушать правила форума по поводу новых вопросов… но все-таки (это ведь все еще та проблема у меня)
wp_enqueue_script( 'jquery' ); «не хочет» работать у меня.
Пытался и в functions.php вставить, и в сам файл со скриптом.
опять наверное что-то не так делаю
Все-таки я «добил» этот вопрос ))…
1. Скрипт достаточно вставить в один файл: payment.php
2. В скрипте нужно поменять все $ на jQuery (т.к. используется режим «No Conflict»)
и все