如果单击元素的祖先之一具有类“文本框”并且没有一个祖先具有类“mceExternalToolbar”,我需要执行某个操作。如果一个对象有一个父“mceExternalToolbar”,那么它肯定有一个父“文本框”,但反之则不然。
我正在使用这个:
$('#content').click(function(e){
var $eparent = $(e.target).closest('.textbox');
var $etoolbar = $(e.target).closest('.mceExternalToolbar');
// what's wrong with this if condition?
if($eparent.length==1 && !$etoolbar.length)
{
//do something
}
});
我认为这很简单,但它似乎不起作用。$etoolbar == NULL
不是有效的jquery,但是当我在条件中使用它时,条件至少第一次运行(虽然在控制台中出现错误)。
我的逻辑或我使用 jQuery 的方式有问题吗?
编辑
HTML 代码如下,我将做一个简短的解释。
我有一个内容框,可以在其中动态创建文本框(我为每个文本框使用 tinyMCE 富文本编辑器)。有时文本框会被“激活”(即 tinyMCE 在文本框元素中创建一堆元素,包括一个类为“mceExternalToolbar”的 div。)人们可以点击大内容 div 上的任何位置,但只有当他们点击一个文本框我想做某个动作。此外,只有当他们的点击不在文本框的 mceExternalToolbar 区域时,我才会招待他们的点击。
<div id="content" style="top:195px; position:absolute; height:300px; width:600px;border: 1px solid black;">
<!-- THE BOX BELOW WAS CREATED DYNAMICALLY -->
<div id="textbox_1" class="textbox" style="top: 101px; left: 112px; cursor: move;" aria-disabled="true">
<div id="textbox_1_menu" class="menu"> <!-- menu items --> </div>
<div id="textareacontainer_1" class="textareaedit">
<textarea id="textarea_1" class="tinymce" style="display: none;" aria-hidden="true">
<p>Testing this textbox</p>
</textarea>
<span id="textarea_1_parent" class="mceEditor defaultSkin" role="application" aria-labelledby="textarea_1_voice"></span>
<div style="position:relative">
<!-- THIS HERE IS THAT PARENT WHO, IF ANY OF ITS CHILDREN ARE CLICKED, I WILL NOT ENTERTAIN IT -->
<div id="textarea_1_external" class="mceExternalToolbar" style="display: block; top: -28px;">
<a id="textarea_1_external_close" class="mceExternalClose" href="javascript:;"></a>
<table id="textarea_1_tblext" cellspacing="0" cellpadding="0">
<tbody>
<tr role="presentation">
<td class="mceToolbar mceLeft" role="presentation">
</tr>
</tbody>
</table>
</div>
</div>
</div>
<!-- END CONTENT BOX -->
</div>
</div>