На многоязычном веб-сайте есть простое событие 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), и на итальянском веб-сайте все в порядке.
Странно, почему так происходит?
Чтобы лучше понять, что происходит, я также попытался добавить классы к кнопке прямо в html. К сожалению, проблема та же, и я предполагаю, что это не проблема jQuery.
Пример JSFiddle
https://jsfiddle.net/e3dc6o48/3/
В JSFiddle работает, понятно, что проблема где-то в моем коде. Где может быть проблема? В CSS или в HTML-файле?
так у вас 2 совершенно разных сайта? или как по-другому запустить код jquery? также почему бы вам не использовать this внутри функции щелчка?
у меня работает jsfiddle.net/9m345bvk/4
Да, точно такой же код в jsfiddle.net работает. Понятно, что проблема в коде, а в чём? CSS или HTML? @MihaiT
@ CarstenLøvboAndersen спасибо за ваше предложение, готово. И вот вроде работает ..
поэтому в вашем html после нажатия кнопки у вас есть только один класс за раз. it или en не оба? верно ?
почему вы звоните в last(), когда звоните в addClass()?
@MihaiT, конечно, спасибо за вопрос. На итальянском сайте я добавляю load_IT, а на английском - load_EN.
@rpfc, без причины. Спасибо за информацию, исправил в своем коде :)
last() -> Reduce the set of matched elements to the final one in the set. это нужно? Вот альтернативная рабочий пример, использующая toggleClassjsfiddle.net/e3dc6o48/18.
ну, помимо того факта, что я не знаю, почему вы используете last, и того факта, что вы не используете this внутри функции click, ваш код должен работать так, как задумано. Пожалуйста, проверьте ваш CSS-код закрытия / блокировки {} и другие возможные опечатки. Если мы не можем воспроизвести вашу проблему, практически невозможно дать вам решение.

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