Только последний селектор CSS :: after работает с jQuery .addClass

На многоязычном веб-сайте есть простое событие jQuery .click, которое добавляет класс к кнопке поиска.

Класс load_IT добавлен на итальянский веб-сайт, а класс load_EN добавлен на английский веб-сайт.

Итальянская версия:

$("#doSearch").click(function() {
  $("#doSearch").last().addClass("load_IT");
});

Английская версия:

$("#doSearch").click(function() {
  $("#doSearch").last().addClass( "load_EN" );
});

С jQuery вроде все нормально, класс успешно добавлен в обе версии сайта.

Оба этих класса имеют простой селектор CSS :: after, как в примере (файл .css одинаков для обоих веб-сайтов):

.load_IT::after {
    content: 'Caricamento...';
    -o-animation: bookingBlink 1s linear infinite;
    -ms-animation: bookingBlink 1s linear infinite;
    -moz-animation: bookingBlink 1s linear infinite;
    -webkit-animation: bookingBlink 1s linear infinite;
    top: 8px;
}

.load_EN::after {
    content: 'Loading...';
    -o-animation: bookingBlink 1s linear infinite;
    -ms-animation: bookingBlink 1s linear infinite;
    -moz-animation: bookingBlink 1s linear infinite;
    -webkit-animation: bookingBlink 1s linear infinite;
    top: 8px;
}

@keyframes bookingBlink {
    0%,
    100% {
        opacity: 1
    }

    50% {
        opacity: .3
    }
}

@-webkit-keyframes bookingBlink {
    0%,
    100% {
        opacity: 1
    }

    50% {
        opacity: .3
    }
}

Теперь проблема в том, что работает только последний.

Если в файле CSS я сначала напишу класс «load_IT», а затем класс «load_EN», будет работать только последний (load_EN), и на английском веб-сайте все в порядке.

Если в файле CSS я сначала напишу класс «load_EN», а затем класс «load_IT», будет работать только последний (load_IT), и на итальянском веб-сайте все в порядке.

Странно, почему так происходит?

  • Уже пробовал:
    • Измените порядок занятий.
    • Поместите один из классов вверху CSS, а другой - внизу.
    • Полностью измените название класса.
    • Удалите анимацию.
    • Использование: after (CSS2) и :: after (CSS3)
    • Используйте :: before для одного класса и :: after для другого класса.

Чтобы лучше понять, что происходит, я также попытался добавить классы к кнопке прямо в html. К сожалению, проблема та же, и я предполагаю, что это не проблема jQuery.

Пример JSFiddle

https://jsfiddle.net/e3dc6o48/3/

В JSFiddle работает, понятно, что проблема где-то в моем коде. Где может быть проблема? В CSS или в HTML-файле?

Пожалуйста, включите свой html и еще лучше сделайте рабочий фрагмент проблемы

Carsten Løvbo Andersen 16.07.2018 14:06

так у вас 2 совершенно разных сайта? или как по-другому запустить код jquery? также почему бы вам не использовать this внутри функции щелчка?

Mihai T 16.07.2018 14:12

у меня работает jsfiddle.net/9m345bvk/4

Nitin S 16.07.2018 14:13

Да, точно такой же код в jsfiddle.net работает. Понятно, что проблема в коде, а в чём? CSS или HTML? @MihaiT

wrkman 16.07.2018 14:28

@ CarstenLøvboAndersen спасибо за ваше предложение, готово. И вот вроде работает ..

wrkman 16.07.2018 14:29

поэтому в вашем html после нажатия кнопки у вас есть только один класс за раз. it или en не оба? верно ?

Mihai T 16.07.2018 14:30

почему вы звоните в last(), когда звоните в addClass()?

piraces 16.07.2018 14:37

@MihaiT, конечно, спасибо за вопрос. На итальянском сайте я добавляю load_IT, а на английском - load_EN.

wrkman 16.07.2018 14:45

@rpfc, без причины. Спасибо за информацию, исправил в своем коде :)

wrkman 16.07.2018 14:46
last() -> Reduce the set of matched elements to the final one in the set. это нужно? Вот альтернативная рабочий пример, использующая toggleClassjsfiddle.net/e3dc6o48/18.
user2560539 16.07.2018 14:47

ну, помимо того факта, что я не знаю, почему вы используете last, и того факта, что вы не используете this внутри функции click, ваш код должен работать так, как задумано. Пожалуйста, проверьте ваш CSS-код закрытия / блокировки {} и другие возможные опечатки. Если мы не можем воспроизвести вашу проблему, практически невозможно дать вам решение.

Mihai T 16.07.2018 14:47
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
1
11
70
0

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