5

ヘッダーを折りたたんでサイズを変更し、画面の横に貼り付けるように設計されたJQueryの小さな部分があります。すべてが1つの部分を除いて機能し、ユーザーがスクロールするたびに高さの「トグル」機能が起動します。これは非常に苛立たしいことです。

スクロールを1回だけ検出する方法、またはトグルを1回だけ検出する方法はありますか?

$(window).scroll(function () {
var width = $(document).width() - 205;
var height = $(document).height();
  $('#me').animate({
    marginLeft: width,
    width: '22px',
    height: 'toggle',
    borderLeftWidth: "10px",
    borderRightWidth: "10px"    
  }, 1000, function() {
    $("#me:first").css("margin-top","-90px");
    var div = $('#me');
    $('#me h1').css("font-size","30px");
    var start = $(div).offset().top;
    $(div).css("height", height);
    $.event.add(window, "scroll", function() {
        var p = $(window).scrollTop();
        $(div).css('position',((p)>start) ? 'fixed' : 'static');
        $(div).css('top',((p)>start) ? '0px' : '');
    });
  });
});
4

2 に答える 2

10

jqueryのone()機能を見てくださいhttp://api.jquery.com/one/

一度だけ発砲し、すぐにそれ自体を削除します。

于 2012-10-04T16:48:00.137 に答える
4

フラグを使用して、初めてかどうかを確認します

var doHeightToggle=true;


$.event.add(window, "scroll", function() {
   if(doHeightToggle)
   {
        var p = $(window).scrollTop();
        $(div).css('position',((p)>start) ? 'fixed' : 'static');
        $(div).css('top',((p)>start) ? '0px' : '');
        doHeightToggle = false;
   } 
});
于 2012-10-04T16:40:55.963 に答える