1

ページのどこかをクリックしてdivを非表示にしたいのですが、プレビューをクリックしてdivが最初に表示された場合に限ります。

私はこれを持っています:

$(function() {  
    $("#videopreview").click(function() {
    $("#videolarge").css({ display: 'block' });
    $("#videopreview").css({ display: 'none' });

        $("#videolarge").click(function(){ return false; });
        $(document).one("click", function() { 
        $("#videolarge").css({ display: 'none' });
        $("#videopreview").css({ display: 'block' });

        });
    });
});

2つの機能を同時に実行するため、何も起こりません:)

アップデート:

$(function() {  
$("#videopreview").click(function() {
    $("#videolarge").css({ display: 'block' });
    $("#videopreview").css({ display: 'none' });
});
$("#videolarge").click(function(){ return false; });
$("#videopreview").click(function(){ return false; });
$(document).click(function() { 
    $("#videolarge").css({ display: 'none' });
    $("#videopreview").css({ display: 'block' });
});
});

remove() を使用できますが、一度非表示にすると、再度実行することはできません (理にかなっています)。どうすればそれを処理できますか?

4

2 に答える 2

0

別のイベント関数内でイベントを使用しないでください。それはうまくいきません。

代わりに次のコードを使用してください。

$(function() {  
    $("#videopreview").click(function() {
        $("#videolarge").css({ display: 'block' });
        $("#videopreview").css({ display: 'none' });
    });
    $("#videolarge").click(function(){ return false; });
    $(document).one("click", function() { 
        $("#videolarge").css({ display: 'none' });
        $("#videopreview").css({ display: 'block' });
    });
});
于 2013-02-02T17:30:37.563 に答える
0

両方のハンドラーを最初からアタッチする場合は、document.click ハンドラーで何かを実行する前に大きなビデオが表示されているかどうかを確認し、クリックされたのがビデオ プレビューではないことも確認します。何かのようなもの:

$(function()
{  
    $("#videopreview").on('click', function()
    {
        $("#videolarge").css({ display: 'block' });
        $("#videopreview").css({ display: 'none' });
    });

    $(document).on("click", function(e)
    {
        if ($("#videolarge").is(":visible") && e.target.id !== "videopreview")
        {
            $("#videolarge").css({ display: 'none' });
            $("#videopreview").css({ display: 'block' });
        }
    });
});

補足: 2 つの要素の CSS プロパティを直接設定する代わりに、追加または削除できる適切な CSS クラスを用意する方が、より簡潔で高速な場合があります。

于 2013-02-02T17:45:28.127 に答える