将event.target与现有的jQuery对象进行匹配

我怎样才能做到这一点?

event.target返回一个HTML对象,

我的元素是一个jQuery对象。

除了比较ID或类之外,还有更好的方法可以找出event.target = my_jquery_object吗?

我想确保它是相同的对象,而不仅仅是具有类似类的元素…

我试过$(event.target) !== the_element但它失败了

the_element在开头定义为$('.something', $(this))


我想要做的是当用户点击它之外时关闭一个盒子,但条件是在第一个打开盒子的链接上没有点击。

所以我有这个:

 $(document).click(function(event){ if(($(event.target).parents().index(box) == -1) && box.is(':visible')){ close(); } }); 

我想添加另一个条件,validation没有在打开框的链接上进行点击。

这有效,但我不喜欢它:

if($(event.target).attr('id') != the_element)

🙂

您可以使用.get(0)或简单的the_element[0]从jQuery获取实际的DOM元素。 不过,用jQuery检查可能会更好。

 if (the_element.is(event.target)) { ... } 

使用你的例子:

 $(document).click(function(event){ if (the_element.is(event.target)) { return false; } if(($(event.target).parents().index(box) == -1) && box.is(':visible')){ close(); } }); 

试试 –

 if(event.target === the_element[0]) 

the_element[0]应该解包你的jQuery对象并返回一个’普通’DOM对象,然后你可以将它与event.target返回的DOM对象进行比较。

也许我错了,但看起来没有人理解这个问题?…我也想知道如何获取JQUERY OBJECT,我使用EVENT.TARGET中的侦听器函数,但不是jquery对象的DOM节点! !))所以…我发现不是一个非常方便但有效的解决方案:

 var elem = $(''); elem.focus( $.proxy( function( e ) { this.onInpFocus( e, elem ); }, this ) ); 

并修改了监听器的回调方法以接收2个参数:

 onInpFocus : function( e, inp ) 

而不是使用简单的方式:

 elem.focus( $.proxy( this.onInpFocus, this ) ); 

实际上,我发现了另一种方式,更方便一个:)只需要使用数据参数:

触发事件时要在event.data中传递给处理程序的数据。

现在我的代码看起来像这样:

 var inp = $(''); inp.focus( { j : inp } , $.proxy( this.onInpFocus, this ) ); //and the handler method onInpFocus : function( e ) { var inp = e.data.j; ... }