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をクリックしているため、実際には複数回非表示になっているためだと思います。bodydivdiv

私の回避策は最終的に

$('*').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 に答える