3

スクロールバー付きのdivがあります。Firefoxを使用してスクロールバーをクリックして下にドラッグすると、divリストが表示され、blurイベントが発生し、blurが発生したときに非表示に設定したdivが非表示になります。スクロールバーを使用しているときにブラーが発生しないようにするにはどうすればよいですか。

$("#mydiv").blur(function () {
    $('#mydiv').fadeOut();
    console.log("fadeout blur");
});

私はこのdivを使用して表示します:

 $('#mydiv').fadeIn();

divがアクティブでない場合は非表示にしたいが、スクロールバーをクリックしようとした場合は非表示にしないようにします。

4

4 に答える 4

3

これはあなたが探しているものかもしれません

$(document).ready(function(){
        $('#mydiv').fadeIn();   

        $("body").bind('click', function(ev) {
        var myID = ev.target.id;
        if (myID !== 'mydiv') {
            $('#mydiv').fadeOut();
        }
    });
});

これにより、クリック イベントが本文にバインドされ、クリック イベントをトリガーする要素の ID もチェックされます。DIV と一致しない場合、div は閉じられます。それ以外の場合、div は常に開いています。

于 2013-01-24T11:30:57.517 に答える
1

あなたはこれを行うことができます:

$(window).scroll(function() {
   $('#mydiv').css('display','block');
});
于 2013-01-16T06:11:16.423 に答える
1

スクロールバーがdiv内に形成されていないようで、クリックすると呼び出しがぼやけます。div のスクロールを表示するために使用される css/style が期待どおりに動作していることを確認してください (div 内にスクロール バーを形成する)。その場合は、両方 (div とスクロール バー) で親 div を使用し、focusOut/blur イベントを使用します。両方を含む親div。

于 2013-01-25T13:20:33.280 に答える
1
var scrolling = false, scrollingTimeout, blurTimeout;

$(window).scroll(function () {
    if (scrollingTimeout) {
        clearTimeout(scrollingTimeout);
    }
    scrolling = true;

    scrollingTimeout = setTimeout(function(){
        scrollingTimeout = null;
        scrolling = false;
    }, 300);
});
$("#mydiv").blur(function () {
    var that = $(this);
    if (!scrolling) {
        that.fadeOut();
    } else {
        if (blurTimeout) {
            clearTimeout(blurTimeout);
        }
        blurTimeout = setTimeout(function () {
            blurTimeout = null;
            that.focus();
        }, 600);
    }
});

ユーザーがスクロールを停止したときの jQuery scroll() 検出およびスクロール イベントの開始と終了のために jQuery でロジックを宣言できますか? を参照してください。

于 2013-01-19T18:15:25.363 に答える