Удалите Attr и добавьте его, если класс существует — jquery

#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')