我有一个click事件和if语句,如下所示。
if (!$(e.target).is("textarea.textobject, div.texteditor"))
{
// do stuff
}
它有效,但问题是如下所示的div。当我点击div中的span或table时,它不起作用。我试过(div.texteditor> *),但这不起作用。
<div class="texteditor">
<span>1</span>
<table>
<tr><td></td></tr>
</table>
</div>
所以基本上我希望能够选择div.texteditor并将其包含在其中的所有内容中。有谁知道解决这个问题?我确定我错过了什么..
答案 0 :(得分:0)
如果事件处理程序位于<div>
本身,请使用this
代替e.target
(可能是孩子),如下所示:
if (!$(this).is("textarea.textobject, div.texteditor"))
{
// do stuff
}
...如果您要检查目标是否在这两种选择器类型中的任何一种内,请使用.closest()
和.length
,如下所示:
if ($(e.target).closest("textarea.textobject, div.texteditor").length == 0)
{
// do stuff
}
由于.closest()
适用于当前元素和父母,因此在这里非常方便。
答案 1 :(得分:0)
我不知道,但您是否尝试过创建另一个分配给div内元素的事件? 类似的东西:
if ( $(e.target).is("span") && $(e.target).parent("div.texteditor") )
{
// do stuff
}
如果它有效,我不会,但这是个主意!
我希望它可以帮到你。 ^^
如果您想申请所有孩子,可以这样做:
if ( $(e.target).parent("div.texteditor") )
{
// do stuff
}