Jquery - 选择元素及其中的任何内容

时间:2010-12-02 11:53:22

标签: javascript jquery javascript-events jquery-selectors

我有一个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并将其包含在其中的所有内容中。有谁知道解决这个问题?我确定我错过了什么..

2 个答案:

答案 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
}