单击时选择元素

时间:2012-03-05 11:45:02

标签: jquery

我在使用.delegate方法选择正确的元素时遇到了问题。

<div><span>Some element</span></div>

即使通过span标记引发click事件,我也需要选择div元素。任何想法,我如何通过span元素到达div?

好的 - 我看到它不清楚,所以我试着再解释一下: 我有一个主要的DIV。这是捕获和处理所有事件的区域。每个“click”,“keydown”和“keyup”事件都应该由主DIV内的第二级触发。第二级是其他DIV的列表。

<div id="outline">
  <div id="1"><span>Some Text <img src="could/be/picture" /></span></div>
  <div id="2"><span>Some Text <ul><li>Could</li><li>Be</li><li>List</li></ul></span></div>
  <div id="3"><span>Some Text <a href="#">Even a link</a></span></div>
</div>

正如你所看到的,DIV中几乎可能存在所有内容。我需要让他们都无法触发事件。意思是:点击IMG或UL&gt; LI或A导致来自底层DIV的事件......(因为他们不存在或禁用事件)

2 个答案:

答案 0 :(得分:1)

在回调函数中,this将引用<span>元素。您感兴趣的<div>元素是<span>元素的父元素,因此请使用jQuery .parent()函数,如下所示:

$(this).parent();

答案 1 :(得分:0)

如果你这样做

$('div').delegate("span", "click", function(){
    var div = $(this).parent();
     //div is the div
});

如果事件在跨度

$('span').click(function(e){
   var div = $(this).parent();
   //You could also use var div = $(this).closest('div'); which works also if the
   //div is not the direct parent of the span
});