2014-09-23 60 views
-1

我有一個父div元素,並且裏面有一個子div元素。現在有一個子div的點擊處理程序,它帶來了一個下拉菜單(如菜單)。Javascript - 使整個div可以被識別

要求 - 也是在父div的點擊上帶下拉。

注意 - 點擊父div,並觸發childdiv.click()將無法正常工作,無限循環。

無法執行停止傳播,使下拉式功能無法正常工作。

+3

請分享您的代碼。這將有所幫助。 – Shamanth 2014-09-23 04:39:47

回答

0

$(document).ready(function(){ 
 
    
 
    $("#child").click(function(){ 
 
     $("ul").slideUp(); 
 
    }) 
 
    
 
    $("#parent").click(function(){ 
 
     $("#child").trigger("click"); 
 
    }) 
 

 
})
#parent { 
 
    padding: 50px; 
 
    background: red; 
 
} 
 
#child { 
 
    height: 50px; 
 
    background: green; 
 
    color: white; 
 
} 
 
li { 
 
    background: rgba(0,0,255,0.3); 
 
    border: 2px solid black; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div id="parent">Parent 
 
    <div id="child"> 
 
    Child 
 
    <ul id="menu" class="hide"> 
 
     <li>menu1</li> 
 
     <li>menu2</li> 
 
    </ul> 
 
    </div> 
 
</div>

+0

上面的代碼不起作用!它進入一個循環。家長點擊,這觸發孩子點擊,然後點擊泡沫到父母,再次孩子和無限循環。 – user3763367 2014-09-23 05:06:04

0

試試這個添加父onclick事件處理程序,然後使用event.stopPropagation阻止事件冒泡。

$("#child").click(function(e){ 
    e.stopPropagation(); 
    $("ul").slideToggle(); 
}); 

$("#parent").click(function(e){ 
    $("#child").trigger("click"); 
}); 

CHECK FIDDLE這是你想要的嗎?不確定接下來要做什麼。添加你的代碼會更容易。

+0

謝謝,它在jsfiddle中工作正常,但相同的代碼在w3school編輯器中不起作用。你能告訴我爲什麼嗎?並且您的代碼按需要工作。 – user3763367 2014-09-23 05:42:43

+0

歡迎@ user3763367,我不確定W3school的編輯。但你有沒有在你的代碼中試過它?如果它幫助你可以接受答案。 – VPK 2014-09-23 05:49:43

+0

不幸的是,停止傳播停止執行功能。功能不像我們的示例代碼那樣簡單。沒有停止傳播的替代解決方案將工作我猜。 – user3763367 2014-09-23 06:24:10