2009-09-05 7 views
0

jquery를 사용하여 텍스트 링크에서 DIV의 표시/숨기기를 수행하려고합니다.jquery를 여러 번 사용하여 div 표시/숨기기

내가 지금까지이 사이트에서 발견 한 예제와 약간 다른 점은 1 페이지에서 여러 번 수행하는 일반적인 방법이 필요하며 일부 페이지에서 사이트를 사용할 수도 있습니다.

페이지에 포함 된 별도의 파일에 JS를 넣을 수 있다면 정말 좋을 것입니다. 그렇다면 기능에 포함시킬 수 있을까요?

누군가 나를 도와 줄 수 있습니까? 일반화하기 위해 id = "toggle-hide-1"과 같은 ID로 표시/숨겨진 div를 지정하고 내 페이지의 숫자를 변경하여 다른 표시/숨기기 영역으로 만들 수 있습니다.

나는 div를 표시/숨기고 페이지에 표시/숨기기를 다른 div에서 구분할 수있는 이름을 사용하여 ID에 이름을 지정할 수 있습니다. 번호를 추가 할 수 있습니다.

아래는 링크 클릭에서 div의 표시/숨기기를 수행하는 부분 코드이지만 꼭 필요한 것은 아닙니다.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 
<script type="text/javascript" > 
$(function() { 
    $(".view-code").click(function(evt) { 
     $(".tool_block, .view-code").toggle(); 
    }); 
}); 
</script> 
<a href="#" class="view-code" >view code</a> 
<a href="#" class="view-code" style="display:none">hide code</a> <br /> 

<div class="tool_block" style="display:none" > 
this stuff is hidden until we choose to show it! 
</div> 

답변

3

아마도 가장 좋은 방법은 사용자 지정 특성을 사용하는 것입니다. jquery에 토글을 알리는 속성으로 앵커를 마크 업하면 작업을 수행하기 위해 일반 코드를 작성하는 것이 더 쉬울 것입니다. 이 같은

뭔가 :

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 
<script type="text/javascript" > 
$(function() { 
    $(".view-code").click(function(evt) { 
     var d = $(this).attr("toolDiv"); 
     $(".tool_block[toolDiv=" + d + "], .view-code[toolDiv=" + d + "]").toggle(); 
    }); 
}); 
</script> 
<a href="#" class="view-code" toolDiv="1" >view code</a> 
<a href="#" class="view-code" toolDiv="1" style="display:none">hide code</a> <br /> 

<div class="tool_block" toolDiv="1" style="display:none" > 
this stuff is hidden until we choose to show it! 
</div> 

그런 다음 앵커-DIV 쌍의 각각에 고유 한 toolDiv 값 (숫자 일 필요는 없습니다) 제공합니다.

+0

정확히 내가 필요한 것입니다! 1 가지 점은 링크를 클릭하면 URL에 #을로드하는 것입니다. 스크롤하면 페이지가 맨 위로 이동하기 때문에 해당 부분을 취소하는 방법을 알고 계십니까? 덕분에 – JasonDavis

+0

또 다른 것은, 내가 다른 곳의 파일에 넣을 수있는 함수에서 이것을 랩핑 할 수 있다면 알 수 있습니까? 그리고 나서 그것을 필요로하는 페이지의 1 라이너로 호출 할 수 있습니까? – JasonDavis

+0

스크립트 블록의 내용을 다른 파일에 저장할 수 있으며 jquery 라이브러리 다음에로드되는 한 모든 페이지에서 정상적으로 작동합니다. 페이지에 JS를 직접 작성할 필요가 없습니다. 앵커의 기본 동작을 방지하려면 클릭 핸들러 끝에'return false; '를 추가하십시오. – Joel

1

div에 전체 컬렉션을 래핑 할 수 있다면 매우 쉽게 만들 수 있습니다. 는 <br />을 처리하지 않는 경우

$(function() { 
    $(".view-code").click(function(e) { 
     $(this).siblings().andSelf().toggle(); 
    }); 
}); 

<div> 
    <a href="#" class="view-code" >view code</a> 
    <a href="#" class="view-code" style="display:none">hide code</a> <br /> 

    <div class="tool_block" style="display:none" > 
    this stuff is hidden until we choose to show it! 
    </div> 
</div> 

, 당신은 단지 DIV 및 앵커 요소에 형제를 필터링 할 수 있습니다.

+0

이것은 앵커와 div가 마크 업에서 다소 관련이 있어야합니다. – Joel

+0

그들은 단지 같은 컨테이너에 있지만 그게 그가 한 것 같은데. – tvanfosson

+0

당신이 만든 가정이 OP에 해당한다면 나는 이것이 우아한 해결책이라고 생각합니다. – Joel

0

대신 특정 클래스를 사용하지 않는 이유는 무엇입니까? 당신은 표시 할 각 요소/년으로 "toggler"라는 클래스를 가질 수 숨겨진 :와,

<div class="toggler"> 
... 
</div> 

그런 다음 번에이 클래스와 모든 요소의 가시성을 전환 할 수 있습니다 :

$(".toggler").toggle(); 

이 시나리오에서는 문서에서 이러한 요소가 상주하거나 요소의 종류가 달라지지 않습니다. 이 기능은 전 세계적으로 사용할 수 있어야하는 경우

, 당신은 항상 같이 사용자 정의 기능을 jQuery를 자체를 확장 할 수

$.toggleTogglers = function(toggleClass) { 
    $("." + toggleClass).toggle(); 
}; 

이 점에서 좋은 당신의 토글 사용자 정의 클래스를 선택할 수있는 유연성을 당신의 자신의 디자인.

관련 문제