Divi: как изменить внешний вид кнопки при нажатии другой

У меня на Divi builder есть эти 2 кнопки. Моя цель: когда я нажимаю на "кнопку 2", эта становится оранжевой, а "кнопка 1" становится серой, и наоборот.

При настройке кнопки (из конструктора) я установил пустое поле Link для этих 2 кнопок. НО, когда я нажимаю, моя текущая веб-страница перезагружается...

Я добавил этот скрипт в заголовок Divi Theme Option> Integration>, чтобы поймать щелчок по первой кнопке:

jQuery(function ($) {
    $( document ).ready(function() {
        $(".button1").on("click", function(){
            event.preventDefault();
            alert("Button clicked");
        });
    });
});

И для этой кнопки 1 я установил класс CSS:

Результат: ни одного щелчка не улавливается...

Ребята, не могли бы вы помочь мне достичь моей конечной цели?

3 ответа

Вы можете попробовать это. Игнорируйте CSS, основная часть - это код jQuery.

Переменная buttons содержит группу элементов, на которые вы хотите добавить эту функцию.

Добавлен обработчик события "щелчок", и все остальное легко понять.

jQuery(function($) {
  $(document).ready(function() {
    var buttons = $(".button1").siblings().addBack();
    buttons.on("click", function() {
      $(this).addClass('orange').removeClass('gray');
      buttons.not($(this)).addClass('gray').removeClass('orange');
    });
  });
});
body {
  padding: 10px 0;
}

div {
  border: none;
  padding: 10px 20px;
  border: 2px solid rgba(0, 0, 0, 0);
  background: #eee;
  display: inline;
  cursor: default;
}

.orange {
  border: 2px solid orange;
  color: orange;
}

.gray {
  border: 2px solid gray;
  color: gray;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="button1">Button1</div>
<div class="button2">Button2</div>
<div class="button3">Button3</div>
<div class="button4">Button4</div>

Я добавил этот скрипт:

jQuery(function ($) {
    
    $( document ).ready(function() {
        
        $(".button1").on("click", function(){
            event.preventDefault();
            $(".button2").removeClass('orange').addClass('gray');
            $(".button1").removeClass('gray').addClass('orange');
            $('.price').text("MOIS");
        });
        
        $(".button2").on("click", function(){
            event.preventDefault();
            $(".button1").removeClass('orange').addClass('gray');
            $(".button2").removeClass('gray').addClass('orange');
            $('.price').text("ANNÉE");
        });
    });
});

И этот собственный CSS:

button.orange{
  border:1px solid #efa100;
}
button.gray{
  border:1px solid #8f8f8f;
}

Нажатие на кнопки работает нормально (текст "цена" обновляется успешно), НО внешний вид кнопки не меняется...

Пожалуйста, попробуйте это вместо этого,

Я создал два класса оранжевого и серого для стиля границы

button.orange{
  border:2px solid orange;
}
button.gray{
  border:2px solid gray;
}

Затем нажмите кнопку, чтобы добавить класс серый и удалить его класс оранжевый, а также добавить братьев и сестер к оранжевому цвету и удалить его серый цвет.

$(this).removeClass("orange").removeClass("gray");
$(this).addClass("gray");
$(this).siblings().addClass("orange").removeClass("gray");

jQuery(function ($) {
    $( document ).ready(function() {
        $("button").on("click", function(){
            event.preventDefault();
            $(this).removeClass("gray").removeClass("orange");
            $(this).addClass("orange");
            $(this).siblings().addClass("gray").removeClass("orange");
        });
    });
});
button{
  border:none;
  padding:10px 20px;
  border-radius:8px;
  color:#111;
}
button.orange{
  border:2px solid orange;
  color:orange;
}
button.gray{
  border:2px solid gray;
  color:gray;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button class="button1">Button1</button>
<button class="button2">Button2</button>

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