웹 프론트엔드 JS 튜토리얼 jquery_jquery에서 mouseleave와 mouseout의 차이점을 설명하는 예

jquery_jquery에서 mouseleave와 mouseout의 차이점을 설명하는 예

May 16, 2016 pm 03:15 PM
jquery mouseout

본 글에서는 jQuery에서 mouseleave와 mouseout의 차이점을 자세히 소개하고, 참고하실 수 있도록 공유합니다
많은 사람들이 jQuery를 사용하여 마우스 호버 효과를 구현할 때 일반적으로 mouseover 및 mouseout 이벤트를 사용합니다. 구현 과정에서 일부 바람직하지 않은 상황이 발생할 수 있습니다.
먼저 마우스아웃 사용의 효과를 살펴보겠습니다.

<p>先看下使用mouseout的效果:</p>
<div id="container" style="width: 300px;">
<div id="title" style="cursor: pointer; background: #ccc;">使用了mouseout事件↓</div>
<div id="list" style="display: none; position: absolute; background:#fff; border: 1px solid #ccc; width: 298px;">
<div>第一行</div>
<div>第二行</div>
<div>第三行</div>
</div>
</div>
<p><script type='text/javascript'> 
jQuery(document).ready(function($) { 
   $("#title").mouseover(function() { 
     var offset = $(this).offset(); 
     $("#list").css({left: offset.left, top: offset.top+19}).show(); 
   }); 
   $("#container").mouseout(function() { 
     $("#list").hide(); 
   }); 
 }); 
</script>
로그인 후 복사

Line 1, Line 2, Line 3 우리는 mouseout 이벤트를 사용할 때 드롭다운 컨테이너 #list에서 마우스가 움직이자마자 hide()가 트리거되는 것을 발견했습니다. 이는 실제로 mouseout 이벤트가 발생하기 때문입니다. 즉, 이벤트는 컨테이너의 하위 요소에 동시에 바인딩될 수 있으므로 마우스가 각 하위 요소 밖으로 이동할 때 hide()가 트리거됩니다.
jQuery 1.3부터 ​​mouseenter와 mouseleave라는 두 가지 새로운 마우스 이벤트가 추가되었습니다. mouseout 이벤트와 달리 mouseleave 이벤트는 마우스 포인터가 선택한 요소를 떠날 때만 트리거됩니다.
mouseleave 이벤트의 효과를 살펴보겠습니다.

<div id="container2" style="width: 300px;">
<div id="title2" style="cursor: pointer; background: #ccc;">使用了mouseleave事件↓</div>
<div id="list2" style="display: none; position: absolute; background:#fff; border: 1px solid #ccc; width: 298px;">
<div>第一行</div>
<div>第二行</div>
<div>第三行</div>
</div>
</div>
<script type='text/javascript'> 
jQuery(document).ready(function($) { 
   $("#title2").mouseover(function() { 
     var offset = $(this).offset(); 
     $("#list2").css({left: offset.left, top: offset.top+19}).show(); 
   }); 
   // 绑定mouseleave事件,效果很好 
   $("#container2").mouseleave(function() { 
     $("#list2").hide(); 
   }); 
 }); 
</script>
<p>
로그인 후 복사

첫 번째 줄, 두 번째 줄, 세 번째 줄 mouseleave 및 mouseout 이벤트는 이벤트 버블링이 특정 시간에 매우 유용하기 때문에 각기 다른 용도로 사용됩니다.
div 마우스아웃 이벤트 버블링 문제 해결
해결책은 jquery의 바인드 메소드를 사용하는 것입니다
예: 이제 마우스 이벤트를 모니터링해야 하는 div 개체가 있습니다.

<div class="dpx2"><div class="dpx2_px" style="cursor:pointer;" id="searchSort">请选择排序方式↓</div>
      <div class="dpx2_px_xl" id="sortList" style="display:none;position:absolute;z-index:5;">
        <div><a class="sortA">按时间升序↑</a></div>
        <div><a class="sortA">按时间降序↓</a></div>
        <div><a class="sortA">按评论数量升序↑</a></div>
        <div><a class="sortA">按评论数量降序↓</a></div>
        <div><a class="sortA">按点击数升序↑</a></div>
        <div><a class="sortA">按点击数降序↓</a></div>
      </div>
    </div>
로그인 후 복사

ID가 searchSort인 Div 위로 마우스를 이동하면 다음 div가 표시됩니다. 마우스가 아래 div 밖으로 나가면 div를 숨깁니다
JS는:

 $(function(){
         var sortList = $("#sortList");
      $("#searchSort").mouseover(function() {
         var offset = $(this).offset();
        sortList.css("left", offset.left);
        sortList.css("top", offset.top+20);
        sortList.show();
      });
//关键的一句,绑定Div对象的mouseleave事件
      sortList.bind("mouseleave", function() {
        $(this).hide();
      });
    });
로그인 후 복사

위 설명에 따라 드롭다운 효과를 시뮬레이션합니다.
1. 마우스 포인터가 선택한 요소 또는 하위 요소를 벗어나는지 여부에 관계없이 mouseout 이벤트가 트리거됩니다.

2. mouseleave 이벤트는 마우스 포인터가 선택한 요소를 벗어날 때만 트리거됩니다.

<div class="sel_box">
  <input type="button" value="请选择所属部门" id="sel_dept" />
  <div class="hide" id="sel_dept_sh" style="display: none;">
    <p>
      <font>深圳市公司 </font>
    </p>
    <p>
      <font>集团管理层 </font>
    </p>
  </div>
</div>
 
<script type="text/javascript">
$(".sel_box").click(function(event){
   if(event.target.id == 'sel_dept'){
     $("#sel_dept_sh").show(); //显示下拉框
     $("#sel_dept_sh p font").click(function(){
       $("#sel_dept").val('');
       var text = $(this).text();
      // alert(text);
       $("#sel_dept").val(text).css("color","#000");
       $("#sel_dept_sh").hide();
     });
 
   }else{
     $("#sel_dept_sh").hide();
   }
   
 
});
 
$(".sel_box").bind("mouseleave",function(){//用mouseleave就实现了模仿下拉框的效果
    $(this).find(".hide").hide();  
  });
 
$(".sel_box").bind("mouseout",function(){//而mouseout则不行,什么时候都会触发
    $(this).find(".hide").hide();  
  });
</script>
로그인 후 복사

위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

jQuery 참조 방법에 대한 자세한 설명: 빠른 시작 가이드 jQuery 참조 방법에 대한 자세한 설명: 빠른 시작 가이드 Feb 27, 2024 pm 06:45 PM

jQuery 참조 방법에 대한 자세한 설명: 빠른 시작 가이드

jQuery에서 PUT 요청 방법을 사용하는 방법은 무엇입니까? jQuery에서 PUT 요청 방법을 사용하는 방법은 무엇입니까? Feb 28, 2024 pm 03:12 PM

jQuery에서 PUT 요청 방법을 사용하는 방법은 무엇입니까?

jQuery를 사용하여 요소의 높이 속성을 제거하는 방법은 무엇입니까? jQuery를 사용하여 요소의 높이 속성을 제거하는 방법은 무엇입니까? Feb 28, 2024 am 08:39 AM

jQuery를 사용하여 요소의 높이 속성을 제거하는 방법은 무엇입니까?

jQuery 팁: 페이지에 있는 모든 태그의 텍스트를 빠르게 수정하세요. jQuery 팁: 페이지에 있는 모든 태그의 텍스트를 빠르게 수정하세요. Feb 28, 2024 pm 09:06 PM

jQuery 팁: 페이지에 있는 모든 태그의 텍스트를 빠르게 수정하세요.

jQuery를 사용하여 모든 태그의 텍스트 내용 수정 jQuery를 사용하여 모든 태그의 텍스트 내용 수정 Feb 28, 2024 pm 05:42 PM

jQuery를 사용하여 모든 태그의 텍스트 내용 수정

심층 분석: jQuery의 장점과 단점 심층 분석: jQuery의 장점과 단점 Feb 27, 2024 pm 05:18 PM

심층 분석: jQuery의 장점과 단점

jQuery에서 eq의 역할 및 적용 시나리오 이해 jQuery에서 eq의 역할 및 적용 시나리오 이해 Feb 28, 2024 pm 01:15 PM

jQuery에서 eq의 역할 및 적용 시나리오 이해

jQuery 요소에 특정 속성이 있는지 어떻게 알 수 있나요? jQuery 요소에 특정 속성이 있는지 어떻게 알 수 있나요? Feb 29, 2024 am 09:03 AM

jQuery 요소에 특정 속성이 있는지 어떻게 알 수 있나요?

See all articles