解決內層觸發外層設置的事件

這個問題說的專業一點就是jquery、js的冒泡事件,上網搜了老半天才搞好
比如:

<ul id="ul1">
<li>列表一
    <ul id="ul2">
    <li><a href="" target="iframe">功能一</a></li>
    <li><a href="" target="iframe">功能二</a></li>
    </ul>   
</li>
<li>列表二
    <ul id="ul2">
    <li><a href="" target="iframe">功能一</a></li>
    <li><a href="" target="iframe">功能二</a></li>
    </ul>
</li>
</ul>

描述:內層的ul(ul2)默認是不顯示,比如給外層的《li》寫的點擊事件,點擊後內層ul顯示,再次點擊內層ul消失,如果此時點擊內層的《li》,也會觸發外層《li》的點擊事件,導致內層的ul消失(理論上只讓外層的《li》觸發事件,點擊內層《li》無效果),這就是傳說中的冒泡事件,要解決這個問題也不難,阻止它就好了,有3種情況
1、return false;阻止了冒泡事件,也阻止了標籤的默認事件(比如a標籤的跳轉)
例如:

$("#ul2").children("li").click(function(){
    return false;
});

2、even.stopPropagation(); 阻止冒泡事件,但是不阻止標籤默認事件
例如:

$("#ul2").children("li").click(function(e){
    e.stopPropagation();
});

3、even.preventDefault();不阻止冒泡事件,但是阻止標籤的默認事件
例如:

$("#ul2").children("li").click(function(e){
    e.preventDefault();
});
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章