2012-04-06 2 views
2

내가 처리 요소의 ID로부터 산출 할 어떤 조건 에 기초 toggle a class 싶지는 : JQuery와 toggleClass() - 액세스 선택된 요소

$(".centre li").toggleClass("highlight", someFunction(x)); 

(이는 약 10리스트 요소를 선택한다. 나는

someFunction(selectedElement) { 
    if (selectedElement.id in someArray) 
    return true 
    else 
    return false 
} 

내가 가 폐쇄 - 지옥 내 길을 잃은있을 수 있습니다).이 강조 여부를 요구하는 경우 조회하는 각 요소의 ID가 필요하지만,에 this 함수가 다른 요소로 설정됩니다.

... 
showListItem = function(linkSelector, listSelectors, contentSelector) { 
return function() { 
    $(".centre li").toggleClass("backgroundFullOrange", test(this)); 
    function test(a) { 
     console.log($(a).attr("id")); // -> id of the linkSelector-element 
    } 
} 
}; 
$(linkSelector).bind('click', showListItem(linkSelector, listSelectors, contentSelector)) 
... 

업데이트 : 이것은 실제 코드 toggleClass()는 내가 찾고 있던 기능 아니라고 밝혀졌다. 올바른 사용법에 대한 대답을 참조하십시오.

+0

** if ** only **가'true' 또는'false'를 반환하는'if' 문이 필요하지 않습니다. someArray' 절의 selectedElement.id는 부울 값을 반환하므로 간단히 반환하십시오. –

+0

@Anthony - 알아. 그냥 너희들을 위해 더 쉽게 읽을 줄 알았다. 결국 pseudo-code이다. :) –

답변

4

먼저 $(".centre li").toggleClass("highlight", someFunction(x));은 올바른 구문이 아닙니다.

switchA 부울 값은 클래스 를 추가 또는 삭제되어야 하는지를 결정하기 위해, 제 2 인수는 switch이고 정의는 아래와 같다.

스위치는 사용자가 가지고있는 기능이 될 수 없습니다. 귀하의 경우에는

당신은 ' .removeClass('highlight') 전화를해야하고 다음 addClass하는 내부 당신이'요소의 ID를 비교 강조 표시 또는 반환 할 것이다.

2 개의 li를 1.5 초마다 무작위로 강조 표시하는 DEMO를 참조하십시오.

$(".centre li") 
     .removeClass('highlight') 
     .addClass(function() { 
      return ($.inArray(this.id, someArray) >= 0)?'highlight': ''; 
     }); 

DEMO

은 내가 올바르게 시간을 이해 생각한다.
$(function() { 
    var someArray = ['l1', 'l8']; 

    $(".centre li").toggleClass(function() { 
     return ($.inArray(this.id, someArray) >= 0)?'highlight':''; 
    }); 

}); 

DEMO

.filter를 사용해보십시오, 아래를 참조하십시오. 아래처럼,

$(".centre li").filter(function() { 
    return $.inArray(this.id, someArray); 
}).toggleClass("highlight"); 

강조 표시는 필터가 반환 한 요소에만 추가됩니다.

+0

thx는 응답을하지만 이것은 내 문제를 해결하지 못한다. 이것은 내 필터를 위해 선택된 요소의 id를 얻는다. (업데이트 된 질문 참조) –

+0

@jangroth'.filter ' 요소의'id'. 'this'가 현재'li'가 될 것입니다. 내 업데이트 답변을 참조하십시오. –

+0

@jangroth'.filter()'에 전달 된 함수에서'this'를 사용하여 세트의 현재 요소를 참조 할 수 있습니다. –