2012-01-16 4 views
2

온라인으로 $("ul.tabrow li").removeClass("active"); //Remove any "active" class$(this).removeClass("active")을 사용하도록 변경하면 대신 생각했던 것처럼 작동하지 않습니다.

코드가 지금 당장 어떻게 작동하는지, 위에서 언급 한 내용이 작동하지 않는 이유를 알고 싶습니다. 아래 라인 7에서 같은 셀렉터로 보이는 코드에 $(this)을 사용합니다. 7의 코드는 다르지만 6 행은 다릅니다.

누구든지 설명 할 수 있습니까? $(this) 만 그들 모두는 현재 목록 항목에없는 참조하기 때문에

$("ul.tabrow li").bind({ 
    click: function() { 
    return false; 
    }, 
    mouseenter: function() { 
    $("ul.tabrow li").removeClass("active"); //Remove any "active" class 
    $(this).addClass("active"); //Add "active" class to selected tab 
    $(".tab-box").hide(); //Hide all tab content 
    var activeTab = $(this).find("a").attr("href"); //Find the rel attribute value to identify the active tab + content 
    //$(activeTab).fadeIn(); //Fade in the active content 
    $(activeTab).show(); //Fade in the active content 
    return false; 
    } 
}); 
+2

가 – annonymously

+0

는 잘 모르겠어요 '내가 생각했던대로 다음이 작동하지 않습니다'설명보다 일반적인 무언가를 사용할 수 있지만 chrome이나 firebug 같은 것을 사용하여'$ (this))'줄을 깨고 정확하게 가리키는 부분을 볼 수 있습니다 (지역 변수의 id 속성 참조). 이것은 li 대신 부모 요소로 보일 수 있습니다. –

답변

7

당신은 실제로 이것은 라인 6. $("ul.tabrow li")을 사용를 원한다.

$(this)은 선택자를 대체하지 않으며 현재 활성 요소 (마우스를 올리고있는 현재 요소)를 나타냅니다. 따라서 라인 6에서 this을 사용하면 현재 요소에서 활성 클래스를 제거한 다음 즉시 다시 추가합니다. 결과는 본질적으로 아무 일도 일어나지 않습니다. 그런 다음 선택을 반복하지 않으려면

이 같은

$(this).siblings().removeClass('active'); 
+0

알겠습니다. 이제 탭의 행을 이해하므로'$ ("ul.tabrow li")'는 모든 탭에서 활성 클래스를 제거한 다음 도움을 주신 덕분에 추가했습니다. – JasonDavis