2011-03-31 7 views
0

jQuery를 사용하여 슬라이딩 FAQ 메뉴를 만들려고하는데 hide()가 null이라는 오류가 발생합니다. 나는 크롬과 파이어 폭스에서 맥과 파이어 폭스에서 그것을 시도했다.jquery hide() function

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script> 
<script type="text/javascript"> 

$(document).ready(function(){ 

    $('.hide').hide(); 

    $('h5').click(function(){ 
    $(this).next().slideToggle("slow"); 
    return false; 
}); 


}); 

을 그리고 여기에 HTML입니다 : 여기에 코드는 내가 온라인으로 책과 자습서 쏟아져 마지막 세 시간 동안 한

<a href="#" ><h5 >The Heading </h5></a><br /> 

<div class="hide"> 
The content. 
</div> 

모든 것이 잘 보인다,하지만 분명히 없습니다. : P

모든 도움을 주시면 감사하겠습니다. .next()형제 요소를 숨길하려고 거기에서

+3

당신이 jQuery를에 대한 참조를 추가 한? –

+0

이 코드는 모두 무엇입니까? – amosrivera

+0

은 'hide'클래스와 'hide'액션이 충돌 할 수 있습니다. 수업을 'myhide'로 변경하면 어떻게됩니까? – dnagirl

답변

1

업데이트 : Ant가 페이지의 공개 URL을 게시 한 후 Ant의 원래 질문에 게시 된 샘플 코드에 아무런 문제가 없다고 확신 할 수 있으므로 저에게 투표 해 주신 모든 분께 감사드립니다. 문제는 Ant의 페이지가 prototype과 jQuery 라이브러리를 함께 사용한다는 것입니다. 이 사실은 원래의 질문에서 생략되었습니다. 이 두 라이브러리는 $ 변수에 대해 충돌합니다. 당신이

jQuery(document).ready(function() { 
    jQuery('.hide').hide(); 

    jQuery('.toggler').click(function() { 
     jQuery(this).nextAll('.hide:first').slideToggle("slow"); 
     return false; 
    }); }); 

로 사방 $ 대신 키워드 jQuery를 사용하도록 코드 개미를 변경하는 경우 난 당신의 코드가 작동합니다 확신합니다. 코드 아무 문제가 없습니다 여기

http://api.jquery.com/jQuery.noConflict/

jQuery를 페이지에 설명 된대로 또는 당신은 충돌없이 기술을 사용할 수 있습니다. 이것을 공개 사이트에 올리고 URL을 공유 할 수 있습니까? 내가 생각할 수있는 유일한 점은 jQuery가 들여 보내지지 않는다는 것입니다.

</HTML> 

태그

+0

실제로 작동하는지 확인하기 위해 코드를 테스트 했습니까? 당신이 그렇게했다면, 그 문제가 아주 사소한 것이 아니라는 것을 알았을 것입니다. –

+0

여기에 주어진 정확한 코드를 사용하여 JSFiddle을 만들었습니다. 어떤 오류없이 완벽하게 잘 돌아갔다. 원래 질문은 hide()가 NULL이고 다른 것은 아무것도 없다는 것이었다. 왜 JS 피들 (Piddle)을 직접 만들어 보시지 않으시겠습니까? 나는 그가 어떤 일이 일어나는지 정확하게 볼 수 있도록 사이트에 코드를달라고 요청했습니다. 하향 투표에서 총을 빨리 쳐라. 그렇지 않니? – Nikhil

+0

페이지는 http://www.messiah.edu/offices/_hr/applicants/applying.html입니다. – Ant

4

귀하의 .click() 핸들러의 <h5> 요소입니다 ... 그 중 하나가되지 않습니다. 대신이의

:

$(this).next().slideToggle("slow"); 

당신은 <a>에 (다음의 모든 형제 자매를 검색) .nextAll() 같은 필요할 것 :

$(this).parent().nextAll('.hide:first').slideToggle("slow"); 

You can try it out here합니다.

또는

, 어쩌면 조금 청소기는이 같은 상황을 단순화하기 위해 앵커에 클래스를 추가 할 수 있습니다

<a class="toggler" href="#"><h5>The Heading </h5></a><br /> 

<div class="hide"> 
The content. 
</div> 

을 그런 다음 <a>에있어 이후, 당신은하지 않습니다 이처럼 .parent() 전화를해야합니다

$(document).ready(function() { 
    $('.hide').hide(); 

    $('.toggler').click(function() { 
     $(this).nextAll('.hide:first').slideToggle("slow"); 
     return false; 
    }); 
}); 

You can try that version out here합니다.

+0

스크립트가 click()에 도착하지 않는다고 생각합니다. 브라우저에 hide() 문제가있어 "포기합니다"라고 표시됩니다. – Ant

+0

@Ant - jQuery 외에도 페이지에 프로토 타입이 포함되어 있습니까? –

+0

예, 그게 문제가되었습니다. jQuery라는 단어를 사용하여 $를 전환해야했습니다. 이제 제대로 작동합니다. 감사! – Ant

0

나는 작은을 채찍질 한 HEAD 태그

및 폐쇄 후 자바 스크립트 코드의 나머지 부분에

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script> 

를 이동하십시오 , 이것을 수행하는 방법에 대한 간단한 예제 (DEMO). 나는 이것이 당신의 현재 방법보다 조금 깨끗하다고 ​​생각합니다. 헤더로 <a>을 사용하는 것을 좋아하지 않았습니다.

HTML

<div class="accItem"> 
    <div class="togHead">Heading1</div> 
    <div class="togContent">The content1</div> 
</div> 

<div class="accItem"> 
    <div class="togHead">Heading3</div> 
    <div class="togContent">The content3</div> 
</div> 

JS

$('.togContent:first').slideDown(); 
$('.togHead').click(function(){ 
    var item = $(this).parent().find('.togContent'); 
    if (! $(item).is(':visible')){ 
     $('.togContent').slideUp(); 
     $(item).slideDown("fast"); 
    }    
}); 

CSS

.togHead{ 
    width:300px; 
    background:#000; 
    color:#fff; 
    font-size:20; 
    font-weight:bold; 
    cursor:pointer; 
} 
.togContent{ 
    display:none; 
    width:300px; 
    background:#ff0;  
} 
+1

모든 것을 탐색 할 필요가 없습니다 ... 예를 들어'.siblings ('. togContent')'예를 들어'item'도 이미 jQuery 객체이므로 복제 할 필요가 없습니다 그것 :) –