테스트 사이트 - 개발 중인 베타 버전입니다

Jquery 토글 질문입니다 채택완료

니냐노 3년 전 조회 3,977

</p>

<pre>
$('#menu_open').click(function(){
      $('#category').slideToggle();
});</pre>

<p>

 

현재 슬라이드 토글로만 이루어져잇는데

다른곳 (헤드를 클릭하든 슬라이드 토글이 아닌곳 )을 클릭해도 슬라이드 업 하게끔 

하려고 하는데 버블링이 일어나서 그런가 계속 메롱 하듯이 열렷다 다시 닫혓다 하더라구요;;

 

</p>

<pre>
$('#menu_open').click(function(){
      $('#category').slideToggle();
});
$('#menu_open').click(function (e){
    e.preventDefault();
  if(e.target!=$('#category')){
      $('#category').slideUp();

  }
});</pre>

<p>

 

현재 제가 쓴 코드입니다 어떻게 바꿔야 될까요

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트

불린변수를 하나 만들어서 토글업일 때는 true, 토글다운일 때는 false 로 주고 이프문을 걸어 상황에 맞게 변수값을 바꿔치기하면서 사용하시면 될 것 같습니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

3년 전
if(e.target!=$('#category'))

이 조건문 부분이 하나는 jquery 객체, 하나는 javascript 객체를 가리키고 있네요

 

e.target != document.querySelector('#category') 또는 $(e.target) != $('#category')로 해보세요

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

니냐노
3년 전
e.target e.currentTarget e.preventDefault() e.stopPropagation()은 안해도 되는걸로 알고잇습니다
니냐노
3년 전
e.target e.currentTarget e.preventDefault() e.stopPropagation()은 안해도 되는걸로 알고잇습니다

댓글을 작성하려면 로그인이 필요합니다.

3년 전

up down 같은 클래스를 주고 슬라이드 상태가 맞게 주고

다른 곳을 클릭했을때 하는 소스에 슬라이드가 다운인 상태일때만 업하게 해주시면 될거 같습니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

니냐노
3년 전
div 하나에 담은 카테고리 인지라 클래스를 각각 사용할수 없어요 ㅠ

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인