1

所以,我试图关闭一个模糊的表格,例如 Facebook 评论。问题是,我有一个:

$(window).click(function(){ $('.comment_form').hide(); });
$('.comment_form').click(function(){ return false; });

它工作得很好,但是,通过添加它return false,当我真正去使它生效时,它会在单击时取消提交按钮。

我认为这会在逻辑上起作用:

$('*:not(.comment_form,.comment_form *)').click(function(eve)
{
    $('.comment_form').hide();
});

但是,不幸的是,它没有,我认为这是因为当我点击时,假设.comment_form我实际上是在点击body, div, div... 等,所以它实际上隐藏了多次。

我的工作终于

$('*').click(function(eve)
{
    if(!$(eve.target).is('.comment_form,.comment_form *'))
    {
        $('.comment_form').hide();
    }
});

但是,我不太确定我喜欢这个,这就是我问的原因。这将在每次单击时触发此单击事件。

有没有人有什么建议?

4

1 回答 1

1

您的解决方案在正确的轨道上,但将事件附加到document而不是所有元素( *) 可能更明智:

$(document).click(function(eve) {
    if (!$(eve.target).is('.comment_form, .comment_form *')) {
        $('.comment_form').hide();
    }
});
于 2010-12-02T06:31:53.143 回答