Program Tip

클래스없이 특정 요소를 얻기 위해 jQuery : not 및 hasClass ()에서 사용하는 방법

programtip 2020. 11. 9. 20:34
반응형

클래스없이 특정 요소를 얻기 위해 jQuery : not 및 hasClass ()에서 사용하는 방법


이 코드 줄이 있습니다.

$('#sitesAccordion .groupOfSites').click(function() {
    var lastOpenSite = $(this).siblings().hasClass(':not(.closedTab)');
    console.log(lastOpenSite);
});

다른 요소 중 하나를 가져 오는 대신 "거짓"을 얻습니다 (하나가 있고 있어야한다고 가정). 문제는 다음과 같습니다.

.hasClass(':not(.closedTab)');

무엇이 문제입니까?

내 목적은 (jQuery UI를 사용하지 않고) 나만의 아코디언을 만드는 것입니다.

다음과 같이 작성하려고합니다.

$('#sitesAccordion .groupOfSites').click(function() {

    //Get the last opened tab
    var lastOpenSite = $(this).siblings().hasClass(':not(.closedTab)');

    //Close last opened tab and add class
    lastOpenSite.hide().toggleClass('closedTab');

    //Open the current Tab
    $(this).children('.accordionContent').toggle('fast');

    // remove class from open tab
    $(this).toggleClass('closedTab');


});

이것이 최선의 방법입니까? 고마워, 알론


not대신 함수를 사용하십시오 .

var lastOpenSite = $(this).siblings().not('.closedTab');

hasClass요소에 클래스가 있는지 여부 만 테스트 not하고 제공된 선택기와 일치하는 선택된 집합에서 요소를 제거합니다.


다음과 같이하는 것이 훨씬 쉽습니다.

if(!$('#foo').hasClass('bar')) { 
  ...
}

! 기준 앞에는 거짓을 의미하며 대부분의 프로그래밍 언어에서 작동합니다.


jQuery의 hasClass()메서드는 요소가 아닌 부울 (true / false)을 반환합니다. 또한 여기에 제공되는 매개 변수는 선택자가 아닌 클래스 이름입니다.

예 : x.hasClass('error');


jQuery-is (selector) Method를 사용할 수도 있습니다 .

var lastOpenSite = $(this).siblings().is(':not(.closedTab)');

원래 게시 당시에 이것이 사실인지 모르겠지만 형제 메서드는 선택자를 허용하므로 나열된 OP가 작동해야하는 것을 줄입니다.

 $(this).siblings(':not(.closedTab)');

참고 URL : https://stackoverflow.com/questions/8743026/how-to-use-in-jquery-not-and-hasclass-to-get-a-specific-element-without-a-cla

반응형