选择除特定子元素之外的元素

Mor*_*itz 4 html jquery

我的问题是:

我选择了一个有很多子元素的 div,想知道如何不选择某个元素,而该元素实际上是该先前选定元素的子元素。

我已经尝试过:not(selectedElement)选择器和.not(selectedElement)选择器或 api(不知道它是如何调用的)。无论如何,我也发现有人问了一个没有帮助的类似问题,所以我想找出问题的唯一方法是在这里问你是否有任何方法(我知道 stackoverflow 并不是那样工作,但我认真地坐了很多次都解决不了):

HTML:

<div class="tablee" style="cursor:/*pointer*/;">
    <table>
        <tbody>
            <tr>
                <td>
                    <a href="something.php">
                        <img src="1.jpg">
                    </a>
                </td>
                <td class="postcontent">
                    <p class="postusername">
                        <a class="poster" href="something.php">momo</a>
                        <br>
                        some other text
                    </p>
                </td>
                <td>
                    <imgsrc="1.jpg">
                </td>
            </tr>
        </tbody>
    </table>
</div>
Run Code Online (Sandbox Code Playgroud)

jQuery:

//non-dynamyic
$(".tablee").not($(this).find('a')).click(function() {
    $(this).next().slideToggle();
});
Run Code Online (Sandbox Code Playgroud)

因此,如果tablee单击而不是其中的链接(tablee元素内),则后面的下一个元素tablee将切换。

Ben*_*enG 5

首先,您的选择器没有选择所有子项并将单击事件附加到 then。该事件仅在实际选择器上,并且在单击子项时该事件会传播到父项。

您有一个点击事件.tablee,您不想在点击其中的任何内容时触发该事件a。在这种情况下,有一个单独的事件astopPropagation: -

$(".tablee").click(function() {
    $(this).next().slideToggle();
});

$(".tablee a").click(function(e) {
    e.stopPropagation();
});
Run Code Online (Sandbox Code Playgroud)

这将停止任何点击a冒泡到.tablee