2012-07-16 248 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() 
    } 
); 
});