채택완료

Jquery 토글 질문입니다

2021-11-24 (수) 18:32:08 4,119
Copy
$('#menu_open').click(function(){
      $('#category').slideToggle();
});

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

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

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

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

  }
});

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

|

답변 3개 / 댓글 3개

채택된 답변
+20 포인트
2021-11-24 (수) 22:01:45

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

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

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

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

답변에 대한 댓글 2개

e.target e.currentTarget e.preventDefault() e.stopPropagation()은 안해도 되는걸로 알고잇습니다
e.target e.currentTarget e.preventDefault() e.stopPropagation()은 안해도 되는걸로 알고잇습니다
2021-11-24 (수) 20:47:30

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

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

답변에 대한 댓글 1개

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

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