• Здравствуйте!
    Нужно выделять фон выбранного радиокнопкой способа доставки… мучаюсь второй день (
    1. Пробовал через :checked
    .woocommerce ul#shipping_method li input:checked + label {background: #dedede;} — меняется фон только у заголовка… Как это «распространить» на весь блок, ума не приложу…
    2. Можно попробовать добавить css класс к выбираемому элементу через php или js. Но как это правильно делается? пробовал:

    <script>
    $('#shipping_method').click(function(){
        if($(this).is(":checked")) {
            $(this).addClass("checked");
        } else {
            $(this).removeClass("checked");
        }
    });
    </script>

    — не получается

Просмотр 11 ответов — с 1 по 11 (всего 11)
  • Модератор Denis Yanchevskiy

    (@denisco)

    WordPress-разработчик, denisco.pro

    Здравствуйте.

    <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 и результата нет… (

    Модератор Denis Yanchevskiy

    (@denisco)

    WordPress-разработчик, denisco.pro

    Ну я обычно вставляю в какой-нибудь 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 файлы темы — тоже нет результата… что же делать?

    alert(‘test’) появляется

    Модератор Denis Yanchevskiy

    (@denisco)

    WordPress-разработчик, denisco.pro

    Я так понимаю, что если у Вас этот код работает, то и у меня должен — 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 по умолчанию (но без этого у меня не работает)?

    Модератор Denis Yanchevskiy

    (@denisco)

    WordPress-разработчик, denisco.pro

    И еще такой вопрос: зачем еще раз подключать

    Новые вопросы нужно задавать в новой теме. Правила п2

    По поводу вопроса. jQuery включен в дистрибутив WordPress, но загружается только по требованию, если, например, его вызвали напрямую

    wp_enqueue_script( 'jquery' );

    либо указали в зависимостях.

    Если jquery подключен на странице несколько раз, то следует оставить только один.

    Не хочу нарушать правила форума по поводу новых вопросов… но все-таки (это ведь все еще та проблема у меня)
    wp_enqueue_script( 'jquery' ); «не хочет» работать у меня.
    Пытался и в functions.php вставить, и в сам файл со скриптом.
    опять наверное что-то не так делаю

    Все-таки я «добил» этот вопрос ))…
    1. Скрипт достаточно вставить в один файл: payment.php
    2. В скрипте нужно поменять все $ на jQuery (т.к. используется режим «No Conflict»)
    и все

Просмотр 11 ответов — с 1 по 11 (всего 11)

Тема «Woocommerce выделить фон выбранного способа доставки» закрыта для новых ответов.