Скрыть элемент с помощью JQuery и активировать кнопку

Я делаю продукт с 3 переменными. Покупатель может забрать товар у нас или мы можем его доставить. Из практических соображений мы решили продавать товары в упаковках по 30, 60 или 90 штук.

Прежде чем можно будет показать цену, необходимо выбрать все 3 переменные. Итак, вот в чем проблема. Если человек хочет забрать товар у нас, нужно выбрать всего 2 переменные: Длина в м и Самовывоз или Доставка. Но это не даст цены. Поэтому мне нужно снова вставить «Самовывоз» в «Пакеты», чтобы получить цену.

Но хотелось бы скрыть "самовывоз" в пакетах, чтобы не сильно запутать посетителя. Изображение описывает то, что я ищу:

Скрыть элемент с помощью JQuery и активировать кнопку

Страницу можно [смотреть здесь][2]

Это код, который у меня есть до сих пор, но, как я вижу, либо мой код не выполняется, либо код просто неверен. Страница выглядит точно так же, как и до того, как я добавил свой код в functions.php, и ни одна из функций не выполняется.

Основываясь на моем описании, кто-нибудь знает, что не так с моим кодом?

HTML:

<ul class = "variable-items-wrapper button-variable-wrapper" data-attribute_name = "attribute_pa_packages">
    <li data-wvstooltip = "pickup" class = "variable-item button-variable-item button-variable-item-pickup" title = "pickup" data-value = "pickup">
        <span class = "variable-item-span variable-item-span-button">pickup</span>
    </li>
</ul>

<ul class = "variable-items-wrapper button-variable-wrapper" data-attribute_name = "attribute_pa_packages">
    <li data-wvstooltip = "pickup" class = "variable-item button-variable-item button-variable-item-pickup selected" title = "pickup" data-value = "pickup">
        <span class = "variable-item-span variable-item-span-button">pickup</span></li>
    </li>
</ul>

PHP и скрипт:

function custom_script_name(){
    ?>
    <script>
    jQuery("ul[data-attribute_name=attribute_pa_pickup-og-delivery] li").click(function(){
        var selectedDelivery = jQuery("ul[data-attribute_name=attribute_pa_pickup-og-delivery]").find("li.selected").attr("data-value");
        if (selectedDelivery == "pickup"){
            jQuery("ul[data-attribute_name=attribute_pa_packages] li[data-value=pickup] span").click();
            jQuery("ul[data-attribute_name=attribute_pa_packages] li[data-value=pickup]").hide(); // hide the "pickup" option in "Packages" if you like
        }
    });
    </script>
    <?php
    }
    add_action('wp_head', 'custom_script_name');

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

Devsi Odedra 30.05.2019 12:17

Спасибо за комментарий. Мне нужно сохранить это как кнопки, потому что для этого есть клиент. В Wordpress нет условной логики. Затем вам нужно купить формы Gravity и т. д., чего клиент не хочет. Поэтому я изо всех сил стараюсь найти альтернативное решение :-)

Julie24 30.05.2019 12:21

Я не понимаю, в чем проблема?

stefo91 30.05.2019 12:24

Спасибо за ваш комментарий @stefo91. Извините, если я был недостаточно ясен. Я только что снова обновил свой вопрос, надеюсь, он более понятен.

Julie24 30.05.2019 12:28

Вы можете добавить display: none в пакеты pickup или добавить к ним класс css, который имеет display: none; Затем проверьте через jquery, если кто-то нажимает "забрать при доставке", чтобы показать получение из посылок.

Ind F. Ashiku 30.05.2019 12:34

Спасибо за ваш комментарий @IndF.Ashiku. Правильно с display: none;. Но пикап еще нужно выбрать, чтобы узнать цену.

Julie24 30.05.2019 12:44
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
6
968
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вы можете попробовать приведенный ниже код, он скроет кнопку, но при нажатии кнопки она будет выбрана. просто обновите jquery и попробуйте один раз. надеюсь это была работа

jQuery(document).ready(function(){
     jQuery("ul[data-attribute_name=attribute_pa_packages] li[data-value=pickup]").hide();
    jQuery("ul[data-attribute_name=attribute_pa_pickup-og-delivery] li").click(function(){
        var selectedDelivery = jQuery("ul[data-attribute_name=attribute_pa_pickup-og-delivery]").find("li.selected").attr("data-value");
        if (selectedDelivery == "pickup"){
            jQuery("ul[data-attribute_name=attribute_pa_packages] li[data-value=pickup] span").click();
            jQuery("ul[data-attribute_name=attribute_pa_packages] li[data-value=pickup]").hide(); // hide the "pickup" option in "Packages" if you like
        }
    });
});

Большое спасибо за ответ Альфараз. Я только что попытался обновить functions.php вашим кодом, но вижу, что он ничего не делает. Я добавил следующий код: paiza.io/projects/yCxqHpYXRidzwHiAyd1yDQ. У вас есть идея, почему это так? Если у вас есть доступ к моему Wordpress, не могли бы вы лучше помочь мне? С наилучшими пожеланиями.

Julie24 30.05.2019 12:42

Да, я помогу вам, если вы дадите мне доступ к сайту WordPress.

Alfaraz Shaikh 30.05.2019 12:49

Большое спасибо. Куда я могу отправить вам данные для входа?

Julie24 30.05.2019 12:50

Вы можете отправить меня сюда, или, если вы хотите, отправить его по скайпу. ?

Alfaraz Shaikh 30.05.2019 12:53

Пожалуйста, напишите здесь, когда вы записали код, чтобы я мог снова удалить комментарий. Это тестовая площадка, прежде чем я начну жить

Julie24 30.05.2019 12:55

Хорошо, данные для входа работают.. позвольте мне проверить код. Вы просто хотите скрыть элемент пикапа при посещении пользователя и нажатии кнопки пикапа, а затем выбранной ниже кнопки пикапа, но она остается скрытой. правильно ?

Alfaraz Shaikh 30.05.2019 12:57

Да, но самовывоз здесь никогда не должен показываться посетителю: pasteboard.co/Ih5bAM3.png, но всегда должен быть активен, если только не нажата кнопка «Доставка».

Julie24 30.05.2019 13:00

Давайте продолжить обсуждение в чате.

Alfaraz Shaikh 30.05.2019 13:00

Если я правильно понял вопрос, вам не нужна вторая кнопка вызова. Все, что вам нужно сделать, это поиграть с тем, когда показывать цену. Всякий раз, когда нажимается кнопка длины, самовывоза, доставки или упаковки, проверьте, соблюдены ли все необходимые условия, чтобы показать цену, а затем покажите цену. Проверка может быть такой: если выбрана доставка, то должны быть выбраны и посылки, иначе, если выбран самовывоз, посылки не требуются.

Спасибо за ваше предложение. Да это правда. Я больше ищу предложения по коду или что в моем коде не так.

Julie24 30.05.2019 12:43

Если я правильно понял вопрос:

  • вы хотите скрыть кнопку «Самовывоз» в разделе «Самовывоз или доставка» при загрузке страницы
  • Показывать кнопку «Самовывоз» в «Посылках», когда пользователь нажимает «Самовывоз» в разделе «Самовывоз или доставка».

Вот способ JS сделать это:

  • Запрещать Кнопка "Забрать" в "Посылках" на загрузка страницы.
  • Кнопка Давать возможность Pickup в разделе "Посылки", когда пользователь нажимает кнопку Подбирать в разделе "Самовывоз или доставка".
  • Кнопка Запрещать Pickup в разделе "Посылки", когда пользователь нажимает кнопку Доставка в разделе "Самовывоз или доставка"

Вот пример кода с более простым HTML (Live stackblitz: https://stackblitz.com/edit/js-l9ddiq):

<div>
  <span>Length</span>
  <button>4.2m</button>
  <button>5.1m</buton>
</div>

<div>
  <span>Pickup or delivery</span>
  <button id = "pickup-button">Pickup</button>
  <button id = "delivery-button">Delivery</buton>
</div>

<div id = "packages">
  <span>Packages</span>
  <button class = "toggle-button" style = "display: none;">Pickup</button>
  <button>30</button>
  <button>60</button>
  <button>90</button>
</div>

JS:

const pickUpButton = document.getElementById('pickup-button');
pickUpButton.addEventListener('click', event => {
  const packageButtons = document.querySelector('#packages').querySelectorAll('button');
  packageButtons.forEach(button => {
    if (button.classList.contains('toggle-button')) {
      button.style.display = 'block';
    } else {
      button.disabled = true;
    }
  });
});

const deliveryButton = document.getElementById('delivery-button');
deliveryButton.addEventListener('click', event => {
  const packageButtons = document.querySelector('#packages').querySelectorAll('button');
  packageButtons.forEach(button => {
    if (button.classList.contains('toggle-button')) {
      button.style.display = 'none';
    } else {
      button.disabled = false;
    }
  });
});

ed

Другие вопросы по теме

Похожие вопросы

Есть ли способ навсегда отключить кнопку начальной загрузки после одного щелчка на стороне сервера с помощью PHP?
Почему это дает мне ошибку «Не удается прочитать свойство« удалить продукт »неопределенного» реагировать Js
Добавление элемента DOM путем изменения innerHtml div предотвращает его обнаружение позже с помощью getElementById?
Вкладки Javascript — как добавить хэштеги в URL?
Создание динамических ссылок с помощью JQuery — индивидуальный идентификатор сообщения
Как вы отправляете данные из JS в Flask, обрабатываете данные, а затем отправляете их обратно в JS?
Получить количество объектов массива, принадлежащих частичному идентификатору в JavaScript/Node js
Правильно форматировать/анализировать разные форматы даты
Angular 8 — ленивая загрузка модулей: ошибка TS1323: динамический импорт поддерживается только в том случае, если флаг --module имеет значение «commonjs» или «esNext»
Базовый javascript не работает должным образом