2012-12-06 1 views
0

토글이 많이 포함 된 메뉴가 있습니다. 각 항목은 다른 것을 토글합니다.jQuery - 요소에 특정 CSS 특성이있는 경우 스크립트 실행

몇 가지 기본 설정으로 다시 설정하는 전반적인 "재설정"버튼을 만들려고합니다. 메뉴 항목이 토글되었는지 아닌지를 감지해야합니다. 그렇다면 특정 항목에 대해 일부 코드를 실행하고 그렇지 않은 경우 아무 것도하지 않습니다. 항목이에 전환되고, 그것은 아래에 보여 CSS의 배경 색상을 얻는다, 그래서 나는 다음 다시 코드를 내놓았다 : 기본적으로

$('#app-menu ul.dynamic-items li ul li').toggle(function() { 
    $(this).css({background: "#4c581e"}); 
}, function() { 
    $(this).css({background: "none"}); 
}); 

/* Reset Button */ 

$(".reset").click(function() { 
    if($('#app-menu ul.dynamic-items li').css({background: "#4c581e"}) != null) { 
     $(this).click(); /* If the item has the background code mentioned above, it is toggled on, therefore this "click" should reset its state */ 
    } 
    else { 
    // do nothing // 
    }; 
}); 

메뉴 항목은 #의 4c581e이있는 경우 나, 그 말을하려고 배경, 즉 그 토글이 켜져 있음을 의미하므로 다시 클릭하여 "토글"해야합니다.

문제는 작동하지 않습니다. 나는 jQuery에 상당히 새롭다. 그래서 나는 잘못된 것을하고 있다고 생각했다.

아이디어가 있으십니까?

편집 : 메뉴 항목이 페이지에서 DIV 요소를 실제로 전환한다는 점에 유의하십시오. 메뉴 항목의 CSS 스타일을 다시 설정하는 문제 만이 아닙니다. 이 때문에 특정 CSS 속성이 감지되면 항목을 "클릭"하도록 만들었습니다. 기본적으로 "클릭"하기 때문에 다시 해제됩니다.

답변

2

1.

$(this).css("background-color")는 값을 반환하지만, 아마도 RGB 값이 될 것입니다. => RGB (255, 255, 255)

그래서 하나의 RGB 값을 비교하거나 일부 변환 도구를 사용한다.

http://www.jquery4u.com/jquery-functions/jquery-convert-rgb-hex-color/

2.

당신은 단지 CSS 클래스를 사용하여 클래스를 전환 할 수 있습니다. '재설정'버튼을 클릭하면 모든 기본 클래스가 IMO 훨씬 더 깨끗한 요소로 다시 적용됩니다.

$('#app-menu ul.dynamic-items li ul li').toggle(function() { 
    $(this).toggleClass("active"); 
}); 
$(".reset").click(function() { 
    $('#app-menu ul.dynamic-items li ul li').removeClass("active"); 
}); 

그리고 CSS가 될 수있다 :

li.active { 
    background-color: #4c581e; 
    display: block; 
} 
+0

하지만 기본 클래스를 다시 적용 자사의 단지 문제. 메뉴 항목은 페이지의 div 요소를 토글하므로 재설정 버튼은 요소를 숨기고 메뉴 항목 배경색을 none으로 재설정하고 토글 상태를 재설정해야합니다. 그래서 메뉴 항목에서 "클릭"을 실행하려고합니다. 항목을 클릭하면 배경색이 재설정되고 관련 div 요소가 해제됩니다. –

+1

아, 당신은 배경색을 확인하는 것보다 쉬운 클릭 이벤트'$ (this) .hasClass ("active");를 트리거하기 전에 요소에 "활성"클래스가 있는지 확인할 수 있습니다. – silasjmatson