2012-08-28 34 views
5

我使用jQuery的.on()函数附加对象上的click事件的某些行为,如span如何使用带过滤器的jQuery on()函数获取原始选择器?

我的设置看起来是这样的:

$('#container').on('click', 'span', function() { 
    // do stuff 
}); 

在这个函数中,thisspan如何获得#container


完整的示例:http://jsfiddle.net/aymansafadi/Nk3p9/

<div id="container"> 
    <span>Click Me!</span> 
</div>​ 

-

$('#container').on('click', 'span', function() { 

    var span = $(this), 
     div = false; // This is what I need 

    console.log(span); 
});​ 
+1

一个ID只能出现一次,所以...'$( '#集装箱')'。 ;-) –

+1

或缓存您的选择器... – elclanrs

回答

8

使用event.delegateTarget

$('#container').on('click', 'span', function(e) { 

    var span = $(this), 
    div = e.delegateTarget; 

    console.log(div); 
}); 

DEMO

+4

我爱的时候有人想像一堆'不可能'的答案。 –

+0

谢谢!那正是我所期待的。 –

-1

最简单的方法也只是使用span.parent()

+2

如果容器是祖先,该怎么办? –

+2

比'$('#container')'容易吗?呵呵。 –

+0

@mootinator可能/也许不是,但它的字符较少。 –

相关问题