jQuery单击div触发器,子div触发它

时间:2014-04-24 17:36:27

标签: javascript jquery html css

因此,当用户点击div popu时,它会触发hide(),这很好,但是当我点击文本时,它会关闭,但我希望它保持打开状态。

HTML:

<div id="s" class="popu"><img class="tri" src="img/whtri.png"/>
    <div class="textb"><center style="font-size:14px;">Item Title</center>
        <span style="font-size:12px;">Description this is an item that is very good and i like it very much! I like <a href="f.php">More...</a>
        </span>
        <span style="">
        </span>
    </div>
</div> 

JAVASCRIPT / JQUERY:

$("body").click(function (e) {
        if (!$(e.target).hasClass("popu")) {
            $("#s").hide(200)
        }
    })

请注意,这是一段代码

任何帮助都会很棒!

3 个答案:

答案 0 :(得分:1)

不要只检查点击元素上的类,单击元素的任何子元素时它会失败,检查任何父或点击的元素是否有类,哪个可以完成closest()

$("body").click(function (e) {
    if (!$(e.target).closest(".popu").length) {
        $("#s").hide(200)
    }
});

答案 1 :(得分:0)

我跟这个 -

$(".tri").click(function (e) {
    if( $(this).parent().hasClass('popu') ){
        $("#s").hide(200)
    }
})

测试图片上的点击,找出父母是否有合适的班级,然后在适当的时候隐藏。

答案 2 :(得分:0)

如果您希望#s仅在点击popu div时隐藏,但是当点击popu div中的任何内容时,#s不会隐藏。

尝试删除not!

$("body").click(function (e) {
        if ($(e.target).hasClass("popu")) {
            $("#s").hide(200)
        }
    })

Working Fiddle