2017-04-21 18 views
0

그래서 바디에 특정 클래스가 없다면 클래스에 요소를 추가해야하는 코드. 그것은 다음과 같습니다바디 hasclass가 작동하지 않는다

if ($("body").hasClass("shifter-open")) { 
    $(".scrollheader").addClass("hovered"); 
} 

내가 생각하는 자사의 jQuery 코드는이 코드로 몸이 클래스 (쉬프터 오픈)를 추가하기 때문에 :

$(document).ready(function() { 
    $("body").addClass("shifter shifter-active"); 

    $('.shifter-handle').click(function() { 
     $("body").toggleClass("shifter-open", 1000); 
    }); 
}); 

거기에 내 코드가 작동 할 수있는 방법을 ? 그리고 아마도이 2 개의 코드를 하나로 결합 할 수 있을까요?

답변

0

클래스를 제거하려는 경우 본체가 수행중인 작업을 정확히 모방한다고 가정합니다. 본체가 shift-open 클래스를 토글하는 것처럼 .scrollheader에있는 클래스 hovered을 토글 할 수 있습니다.

$(document).ready(function() { 
    $("body").addClass("shifter shifter-active"); 

    $('.shifter-handle').click(function() {   //When shifter-handle is clicked 
     $("body").toggleClass("shifter-open");  //Toggle "shifter-open" on the body 
     $(".scrollheader").toggleClass("hovered"); //Toggle "hovered" on .scrollheader 
    }); 
}); 

또한 toggleClass() 번째 파라미터는 토글 활성화할지 여부를 판정하는 boolean 걸린다. 두 번째 매개 변수 1000은 영구적으로 truthy이므로 포함 할 이유가 없습니다.

+0

고맙습니다. 추가 된 클래스를 추가했지만 사용자가 마우스를 올려 놓지 않았을 때 다시 제거해 주셔서 감사합니다. 다른 jQuery 스크립트를 덮어 쓸 수 있도록 만들 수 있습니까? 이 스크립트는 덮어 써야하는 스크립트입니다 (나는 doesnothaveclass를 사용하여 그렇게하려고했습니다). if (! $ ('body'). hasClass ('shifter-open')) { var $ header = $ (". scrollheader "); $의 header.hover (함수() { 경우 ($ (창) .scrollTop() 0) {$ header.addClass()가 '떴다'==; }} 함수() { 경우 ($ header.hasClass ('hovered')) { $ header.removeClass ('hovered'); } }); }' – Greatix

+0

무슨 뜻인지 모르겠군요. 내 예제에서는 scrollheader toggleClass를 addClass로 변경하면된다. – Santi

0

조건부 : 당신은 시간 제한 또는 간격 폴링을하지 않는 한

if ($("body").hasClass("shifter-open")) { 
    $(".scrollheader").addClass("hovered"); 
} 

한 번만 평가 될 것입니다. 더 나은 해결책은이 두 섹션을 하나로 결합하는 것입니다. 예 :

또는 이와 비슷한 것입니다. toggleClass에 대한 문서를 확인하는 것이 좋습니다. 두 번째 매개 변수로 정수를 사용하는 것으로 보이지 않기 때문입니다.