2012-01-06 4 views
0

저는 빌드하려고하는 사이트에서 약간의 문제가 있습니다. 사이트의 한쪽에는 사용자가 검색 결과에 영향을 줄 목록 상자를 선택할 수있는 '필터'가 있습니다. '내 CSS에서여러 배열을 통해 확인란의 유효성을 검사 하시겠습니까?

/// Makes checkboxes in the filter add and remove the proper class based on whether they're checked or not 
$('.filterlist input:checkbox').click(function checkboxes(){ 
    $thislist = $(this).closest('.filterlist li > ul'); 
    $checkboxes = $thislist.closest('li > input:checkbox').serializeArray(); 
    if($checkboxes.length < 1) { 
    $(this).closest('ul.filterlist > li').removeClass('itemselected'); 
    } 
    else if($checkboxes.length > 0) { 
    $(this).closest('ul.filterlist > li').addClass('itemselected'); 
    } 
}); 

: 대부분

여기에 지금까지 가지고있는 코드입니다 ... 내가 jQuery를에 안돼서 그러나 나는이 일을하기에 충분한 코드를 조각 같이 관리했습니다 itemselected '는 내가 추가하려고하는 클래스입니다. 문제는 '.filterlist'아래에 하나 이상의 체크 박스 목록이 있다는 것입니다. 첫 번째 목록의 확인란을 선택하면 클래스가 제대로 추가되고 목록의 모든 요소가 제거되면 클래스가 올바르게 제거됩니다. 두 번째 목록에 체크 된 것이없는 한.

이것은 하나의 배열을 사용하기 때문에 발생하지만, 각 목록에 대해 다른 배열을 만드는 방법을 알아낼 수 없기 때문에 일부 목록이 첫 번째 목록에서 선택 되어도 여전히 제거됩니다 두 번째 목록에있는 li의 클래스가없는 경우 두 번째 목록의 클래스 또는 그 반대의 경우

죄송합니다. 오랜 시간 죄송합니다. 구체적으로 말씀 드리려고했습니다.

미리 답변 해 주셔서 감사합니다. =]

+2

[jsFiddle] (http://jsfiddle.net)의 예를 만들면 이것이 더 의미가 있다고 생각합니다. – Chad

+1

jsFiddle은 천 단어 이상을 말합니다. –

+0

jsFiddle을 사용하는 방법을 모르지만 http://jsbin.com/ijuqow/edit#preview에서 예제를 만들었습니다. 코드에서 볼 수있는 것처럼 작동하지만 - 상단 체크 박스 목록과 하단 체크 박스 목록 중 하나를 선택한 다음 둘 중 하나를 선택 취소하면 함수는 둘 다 동일한 배열에 추가되므로 배열을 1보다 큰 값으로 읽으므로 클래스를 제거하지 못합니다. – Alurict

답변

0

??

+0

안녕하세요 , 감사! 그것은 완벽하게 작동했습니다. ^^ 편집 : 첫 번째 부모 위에 부모를 찾으려면 .parent(). parent()를 할 수 있다는 것을 몰랐습니다. 정말 편리합니다. 도움을 다시 주셔서 감사합니다. =] – Alurict

관련 문제