#jquery #each #attr
#jquery #каждый #attr
Вопрос:
Здравствуйте, у меня проблема с этим небольшим кодом:
$(".delayDiv").each(function(){
var img_attr = $(this).attr('style');
$(this).attr('style', '');
if ($(".delayDiv").hasClass("visible")) {
$(this).attr('style', img_attr);
}
});
Что я пытаюсь сделать, так это:
- Ищите Divs с
class="delayDiv"
- затем сохраните атрибут стиля в переменной
- затем найдите class=»visible» в том же div (я добавляю этот класс с помощью viewportChecker.js , это означает, что класс добавляется только в том случае, если Div находится внутри области просмотра).
- Если класс существует, добавьте содержимое стиля снова!
DIV находится за пределами области просмотра:
<div class="backImg"></div>
DIV внутри окна просмотра:
<div class="backImg visible"></div>
Спасибо за любую помощь.
Комментарии:
1. С какой именно проблемой вы столкнулись?
Ответ №1:
Удалите стиль, только если у элемента нет 'visible'
класса.
$(document).ready(function(){
$(".delayDiv").each(function(){
if (!$(".delayDiv").hasClass("visible")) {
$(this).removeAttr('style', '');
}
});
})
Ответ №2:
Все, что вам нужно, это :not()
селектор и removeAttr()
удалить стиль из всего основного класса, у которого также нет видимого класса
$(".delayDiv:not(.visible)").removeAttr('style')