2011-12-22 4 views
0

DOM 요소 배열이 있습니다. 네 번째 창이 클릭되면 검색 창을 숨기고 싶습니다. 다른 것들이 클릭되면 나는 그것을 보여주고 싶다. 어떻게하면 좋을까요? 현재 가지고있는 항목 :배열의 요소를 클릭하면 어떻게 클릭 이벤트가 발생합니까?

var app = { 
    config: { 
     tabs: [$("#tab1"), $("#tab2"), $("#tab3"), $("#tab4")], 
     search: $("#search") 
    }, 
    showHideSearch: function() { 
     // Here I need to test if the fourth tab was clicked on then hide(); 
     // else if tabs one through three were clicked show 
    } 
} 
app.showHideSearch(); 

도움이 되었습니까? 고맙습니다.

답변

2
$.each(app.config.tabs, function(i, v) { 
    v.bind('click', function(){ 
    $('#searchbox').show(); 
    if(i==3) 
     $('#searchbox').hide(); 
    }); 
}); 
+0

show()와 hide()는 css()를 통해 디스플레이를 설정하는 대신에 선호됩니다 – kasdega

+0

처음에는 이것을 보았습니다 1 == 3 그리고 나서 편집하려면 클릭하고 i == 3은 그렇지 않다고 말했습니다 편집했다고 말하십시오. 나는 미친 것 같아 – dstarh

+0

그리고 나는 당신의 if check가 엉망이라고 생각한다. (1 == 3) 결코 사실이 아니다. 나는 너를 원한다고 생각한다 – kasdega

4

이렇게하려면 배열이 필요하지 않습니다.

$("#tab4").click(function() { 
    app.config.search.hide(); 
    // $("#search").hide(); 
}); 
$("#tab1, #tab2, #tab3").click(function() { 
    app.config.search.show(); 
    // $("#search").show(); 
}); 
+2

+1 또한, @JesseAtkinson 추가로 표시하거나 숨길해야하는 요소에 클래스를 적용 고려하는 것이 좋습니다. 그런 다음 선택기를 클래스 이름으로 변경할 수 있습니다. – Craig

관련 문제