두 개의 링크가 있습니다. 하나는 id #calendar_arrival_open이고 다른 하나는 #calendar_departure_open입니다. 두 링크는 캘린더가 포함 된 div를 표시할지 여부를 제어하지만 두 경우 모두 표시되는 캘린더가 동일한 캘린더이므로 두 개의 동일한 캘린더가로드되지 않습니다. 링크를 클릭하면 다음 코드를 사용하여 캘린더 열기 및 닫기를 전환하려고합니다.jQuery로 div 표시 토글
var state = "closed";
if(state == "closed"){
$("#calendar_arrival_open").click(function() {
$("#calendar_box").show();
$("#select_arrival_date").show();
$("#select_departure_date").hide();
state = "arrival_open";
});
$("#calendar_departure_open").click(function() {
$("#calendar_box").show();
$("#select_departure_date").show();
$("#select_arrival_date").hide();
state = "departure_open";
});
}
if(state == "arrival_open"){
$("#calendar_arrival_open").click(function() {
$("#calendar_box").hide();
state = "closed";
});
$("#calendar_departure_open").click(function() {
$("#select_departure_date").show();
$("#select_arrival_date").hide();
state = "departure_open";
});
}
if(state == "departure_open"){
$("#calendar_arrival_open").click(function() {
$("#calendar_box").hide();
$("#select_departure_date").hide();
$("#select_arrival_date").show();
state = "arrival_open";
});
$("#calendar_departure_open").click(function() {
$("#calendar_box").hide();
state = "closed";
});
}
이 코드는 캘린더를 여는 데는 작동하지만 닫으려면 사용할 수 없습니다. 나는 이유를 알 수 없다. 보시다시피, "도착 일정"이 열려 있고 출발 일정 링크가 클릭되면 "출발 일정"이 나타나고 그 반대의 경우도 마찬가지입니다. 그러나 도착 일정이 열려 있고 도착 일정 링크를 클릭하면 일정이 닫힙니다.
누구든지 문제를 볼 수 있습니까? 이 "상태"방법이 내가 필요한 것을 처리하기에 가장 좋은 방법입니까?
if 문은 외부가 아닌 이벤트 처리기 안에 있어야합니다! – bfavaretto
자바 스크립트가 브라우저에 의해 한 번만 해석되므로 (즉, 절대로 '상태!'로 해석되지 않음) = "폐쇄". 이것을 이벤트 처리기 안에 넣어야합니다. –
이것에 대한 좀 더 자세한 정보가 필요합니다. 이 코드는 이러한 링크에 대한 onclick 메소드를 다시 작성하고 클릭이 발생할 때까지 실제로 실행하지 않습니다. 이 코드는 언제 실행됩니까? 문서가로드 될 때 또는 클릭이 발생할 때마다? – CodeMoose