2012-07-16 149 views
0

在我的項目中,我需要創建一個html5 CMS,我的問題是如何定位重疊元素中的元素?像重疊元素中的目標元素

<div id='L1'> 
    <!--some text --> 
    <div id='L2'> 
    <!--some text --> 
    <div id='L3'> 
     <!--some text --> 
    </div> 
    <div id='L4'> 
     <!--some text --> 
    </div> 
    </div> 
</div> 

我想針對L1,L2,L3和L4。現在問題來了,我可以使用$(L1,L1 *)來定位L1中的每個元素,包括L1併爲它們綁定'click'事件處理程序。

然而,當我點擊,讓我們說L4,那麼不僅L4的內容出來,而且還有L1和L2。我想看看這個元素的含義,不需要是父母,我該怎麼辦?

更新: 我通過AJAX加載寺廟容器,並綁定事件處理程序爲他們

$('#load_area').load(file,function(){ 
$('#load_area *').click(
    function(){ 
     $('#edit_area').append($(this).html());//display what I have clicked 
    } 
); 
}); 
+0

你試過'EV ent.stopPropagation();'?你的事件處理程序代碼可以在這裏分享... – Rafay 2012-07-16 06:38:11

+0

更新,謝謝。 – panda 2012-07-16 06:42:13

+0

在'$('#edit_area')。append($(this).html());'後面加上'return false;'然後再試一次 – Rafay 2012-07-16 06:44:27

回答

2

你的代碼是表現這種方式的原因是你的事件冒泡的DOM,以防止這種行爲,你可以執行下列操作之一

$('#load_area').load(file,function(){ 
$('#load_area *').click(
    function(event){ 
     event.stopPropagation(); 
     $('#edit_area').append($(this).html());//display what I have clicked 
    } 
); 
}); 

$('#load_area').load(file,function(){ 
$('#load_area *').click(
    function(){ 
     $('#edit_area').append($(this).html());//display what I have clicked 
     return false; //event.stopPrpagation() + event.preventDefault() 
    } 
); 
});