Подтвердить что ты не робот

JQuery заменить один класс другим

У меня есть этот jQuery, и я меняю стили в нем, но я слышал, что правильный способ сделать это - создать отдельный стиль и просто заменить классы на jQuery. Можете ли вы объяснить мне, как это сделать правильно:

$('.corpo_buttons_asia').click(function() {           
    $('.info').css('visibility', 'hidden');
    $('.info2').css('visibility', 'visible');
    $(this).css('z-index', '20');
    $(this).css('background-color', 'rgb(23,55,94)');
    $(this).css('color', '#FFF');
    $('.corpo_buttons_global').css('background-color', 'rgb(197,197,197)');
    $('.corpo_buttons_global').css('color', '#383838');         
}); 

$('.corpo_buttons_global').click(function() { 
    $('.info').css('visibility', 'visible');
    $('.info2').css('visibility', 'hidden');
    $(this).css('background-color', 'rgb(23,55,94)');
    $(this).css('color', '#FFF');
    $('.corpo_buttons_asia').css('z-index', '2');
    $('.corpo_buttons_asia').css('background-color', 'rgb(197,197,197)');
    $('.corpo_buttons_asia').css('color', '#383838');
}); 


Поэтому вместо использования .css() все время я могу создать другой класс и просто заменить его на jQuery.

Спасибо.

4b9b3361

Ответ 1

Чтобы сделать это эффективно с помощью jQuery, вы можете связать его так:

$('.theClassThatsThereNow').addClass('newClassWithYourStyles').removeClass('theClassThatsTherenow');

Для упрощения вы также можете сделать это шаг за шагом, как это сделать (примечание о назначении объекта jquery для var не обязательно, но оно безопаснее, если вы случайно удалите класс, на который настроен таргетинг, перед добавлением нового класса и имеют прямой доступ к dom node через его селектор jquery, например $('.theClassThatsThereNow')):

var el = $('.theClassThatsThereNow');
el.addClass('newClassWithYourStyles');
el.removeClass('theClassThatsThereNow');

Также (поскольку существует тег js), если вы хотите сделать это в vanilla js:

Для современных браузеров (Посмотрите, какие браузеры я называю современными)

(предполагая один элемент с классом theClassThatsThereNow)

var el = document.querySelector('.theClassThatsThereNow');
el.classList.remove('theClassThatsThereNow');
el.classList.add('newClassWithYourStyleRules');

Или более старые браузеры:

var el = document.getElementsByClassName('theClassThatsThereNow');
el.className = el.className.replace(/\s*theClassThatsThereNow\s*/, ' newClassWithYourStyleRules ');

Ответ 2

Вы можете использовать этот простой плагин:

(function ($) {
    $.fn.replaceClass = function (pFromClass, pToClass) {
        return this.removeClass(pFromClass).addClass(pToClass);
    };
}(jQuery));

Использование:

$('.divFoo').replaceClass('colored','blackAndWhite');

До:

<div class="divFoo colored"></div>

После:

<div class="divFoo blackAndWhite"></div>

Примечание. Вы можете использовать различные классы, разделенные пробелом.

Ответ 3

Вы можете использовать методы jQuery .hasClass(), .addClass() и .removeClass() для управления тем, какие классы применяются к вашим элементам. Просто определите разные классы и добавьте/удалите их по мере необходимости.

Ответ 4

Создайте класс в вашем файле CSS:

.active {
  z-index: 20;
  background: rgb(23,55,94)
  color: #fff;
}

Затем в вашем jQuery

$(this).addClass("active");

Ответ 5

вы могли бы использовать оба класса "corpo_button" или что-то в этом роде, а затем в $(".corpo_button").click(...) просто вызвать $(this).toggleClass("corpo_buttons_asia corpo_buttons_global");

Ответ 7

Вам нужно создать класс с CSS -

.greenclass {color:green;}

Затем вы можете добавить это к элементам с помощью

$('selector').addClass("green");

и удалите его с помощью

$('selector').removeClass("green");

Ответ 8

В jquery для замены класса другим вы можете использовать опцию jqueryUI SwitchClass

 $("#YourID").switchClass("old-class-here", "new-class-here"); 

Ответ 9

jQuery.fn.replaceClass = function(sSearch, sReplace) {
    return this.each(function() {
        var s = (' ' + this.className + ' ').replace(
            ' ' + sSearch.trim() + ' ',
            ' ' + sReplace.trim() + ' '
        );
        this.className = s.substr(1, s.length - 2);
    });
};

ИЗМЕНИТЬ

Это мое решение заменить один класс другим (путь jQuery). На самом деле другие ответы не заменяют один класс другим, а добавляют один класс и удаляют другой, который технически не является тем же самым.

Вот пример:

Разметка перед: <br class="el search-replace"><br class="el dont-search-replace">
js: jQuery('.el').remove('search-replace').add('replaced')
Разметка после: <br class="el replaced"><br class="el dont-search-replace replaced">


С моим решением

js: jQuery('.el').replaceClass('search-replace', 'replaced')
Разметка после: <br class="el replaced"><br class="el dont-search-replace">


Представьте, что строка заменяет функцию на любом языке:

Поиск: "search-replace"
Заменить: "заменить"
Тема: "dont-search-replace"
Результат: "dont-search-replace"
Результат ( неправильный, но на самом деле то, что производят другие решения): "dont-search-replace replace"


PS Если он уверен, что класс для добавления отсутствует, и класс для удаления присутствует наверняка, самым простым решением jQuery будет:
jQuery('el').toggleClass('is-present-will-be-removed is-not-present-will-be-added')

PPS Я полностью понимаю, что если ваш селектор равен классу для удаления других решений, он будет работать просто отлично jQuery('.search-replace').removeClass('search-replace').addClass('whatever').
Но иногда вы работаете с более произвольными коллекциями.

Ответ 10

Начиная с фрагмента HTML:

<div class='helpTop ...

используйте фрагмент javaScript:

$(...).toggleClass('helpTop').toggleClass('helpBottom');