我在使用.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的事件......(因为他们不存在或禁用事件)
答案 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
});