js下關(guān)于onmouseout、事件冒泡的問題經(jīng)驗小結(jié)
更新時間:2010年12月09日 19:26:33 作者:
第3次遇到這個問題,于是總結(jié)了一下,將此短文發(fā)在首頁,希望對瀏覽器事件機制有所了解的大俠們給予解答
問題是這樣的:一個div元素要觸發(fā)onmouseout事件,同時這個div內(nèi)部還有子元素,于是當鼠標移動到該div的子元素上時,onmouseout事件也被觸發(fā)了。在要做浮動層效果的時候會經(jīng)常遇到這個問題。
解決方法一:
使用jQuery,這個大家都會的:
<div id="div1">觸發(fā)顯示浮動層</div>
<div id="div2">
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
</div>
<script>
$("#div1").mouseover(function(){
$("#div2").show();
$("#div2").bind("mouseleave",function(){
$(this).hide();
});//此句需要寫在觸發(fā)浮動層的函數(shù)內(nèi)
};);
</script>
解決辦法二:
利用onmousemove事件優(yōu)先的辦法,來防止在子元素中觸發(fā)onmouseout:
<div id="div1" onmouseover="document.getElementById('div2').style.display='block';">觸發(fā)顯示浮動層</div>
<div id="div2" onmousemove='this.style.display="";' onmouseout='this.style.display="none";'>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
</div>
解決方法一:
使用jQuery,這個大家都會的:
復制代碼 代碼如下:
<div id="div1">觸發(fā)顯示浮動層</div>
<div id="div2">
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
</div>
<script>
$("#div1").mouseover(function(){
$("#div2").show();
$("#div2").bind("mouseleave",function(){
$(this).hide();
});//此句需要寫在觸發(fā)浮動層的函數(shù)內(nèi)
};);
</script>
解決辦法二:
利用onmousemove事件優(yōu)先的辦法,來防止在子元素中觸發(fā)onmouseout:
復制代碼 代碼如下:
<div id="div1" onmouseover="document.getElementById('div2').style.display='block';">觸發(fā)顯示浮動層</div>
<div id="div2" onmousemove='this.style.display="";' onmouseout='this.style.display="none";'>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
</div>
相關(guān)文章
淺談Vue3.0之前你必須知道的TypeScript實戰(zhàn)技巧
這篇文章主要介紹了淺談Vue3.0之前你必須知道的TypeScript實戰(zhàn)技巧,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-09-09數(shù)據(jù)排序誰最快(javascript中的Array.prototype.sort PK 快速排序)
今天在51js論壇中看到一個網(wǎng)友發(fā)布了一個javasctipt實現(xiàn)的快速排序的算法,前些日子工作中也涉及到javasctipt中數(shù)據(jù)排序的應用,當時為了提高排序速度,使用的也是快速排序的算法。2007-01-01JavaScript 聯(lián)動的無限級封裝類,數(shù)據(jù)采用非Ajax方式,隨意添加聯(lián)動
JavaScript 聯(lián)動的無限級封裝類,數(shù)據(jù)采用非Ajax方式,隨意添加聯(lián)動2010-06-06