【问题标题】:JQuery Scroll detection fire onceJQuery Scroll检测触发一次
【发布时间】:2012-10-04 16:36:27
【问题描述】:

我有一小段 JQuery 旨在折叠我的标题,更改其尺寸,然后将其粘贴到屏幕的一侧。除了一个部分之外,这一切都有效,每次用户滚动时都会触发高度“切换”功能,这真的很烦人。

有没有一种方法可以让我只检测一次滚动或只切换一次?

$(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' : '');
    });
  });
});

【问题讨论】:

  • 使用一个标志并在它触发后将其设置为真

标签: jquery jquery-animate


【解决方案1】:

看看jquery的one()功能http://api.jquery.com/one/

它只会触发一次,然后立即自行移除..

【讨论】:

    【解决方案2】:

    使用标志来检查它是否是第一次

    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;
       } 
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多