[英]Match event.target with existing jQuery object
我怎样才能做到这一点?
event.target
返回一个HTML对象,
我的元素是一个jQuery对象。
有没有更好的方法来找出event.target = my_jquery_object,除了比较ID或类?
我想确保它是相同的对象,而不仅仅是具有类似类的元素...
我试过$(event.target) !== the_element
但它失败了
the_element在开头定义为$('.something', $(this))
我想要做的是当用户点击它之外时关闭一个盒子,但条件是在第一个打开盒子的链接上没有进行点击。
所以我有这个:
$(document).click(function(event){
if(($(event.target).parents().index(box) == -1)
&& box.is(':visible')){
close();
}
});
我想添加另一个条件来验证是否在打开该框的链接上进行了点击。
这有效,但我不喜欢它:
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 = $('<input type="text" class="input" />');
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 = $('<input type="text" />');
inp.focus( { j : inp } , $.proxy( this.onInpFocus, this ) );
//and the handler method
onInpFocus : function( e )
{
var inp = e.data.j;
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.