“回归”战争之后无法到达

时间:2013-10-23 18:19:17

标签: javascript jquery

我似乎无法修复这些警告:

  1. 将此与之前的“var”语句相结合,即第7,9和10行。
  2. 在“返回”之后无法访问 - 在($window.width() <= 770) { return;
  3. 的位置

    以下是脚本:

         //StickyBox
         $(function () {
             $.fn.scrollBottom = function () {
                 return $(document).height() - this.scrollTop() - this.height();
             };
             var $StickyBox = $('.detailsBox');
             var $window = $(window);
    
             $window.bind("scroll resize", function () {
                 var gap = $window.height() - $StickyBox.height() - 10;
                 var footer = 288 - $window.scrollBottom();
                 var scrollTop = $window.scrollTop();
    
                 $StickyBox.css({
                     top: 'auto',
                     bottom: 'auto'
                 });
    
                 if ($window.width() <= 770) {
                     return;
                     $StickyBox.css({
                         top: '0',
                         bottom: 'auto'
                     });
                 }
    
                 if (scrollTop < 50) {
                     $StickyBox.css({
                         bottom: "auto"
                     });
    
                 } else if (footer > gap - 100) {
                     $StickyBox.css({
                         top: "auto",
                         bottom: footer + "px"
                     });
    
                 } else {
                     $StickyBox.css({
                         top: 80,
                         bottom: "auto"
                     });
                 }
             });
         });
    

    无论如何还要更改以下脚本,所以我不需要给出一个数字,但它应该知道标题何时到达框然后固定它的位置?

    if (scrollTop < 50) {
    $StickyBox.css({
    bottom: "auto"
    });
    

    上面代码的实例:http://loaidesign.co.uk/php/projects.php?project=1

2 个答案:

答案 0 :(得分:1)

问题是如果这个“if”为真,那么它将永远返回,并且下一代代码行永远不会运行。

if ($window.width() <= 770) {
                 return;
                 $StickyBox.css({
                     top: '0',
                     bottom: 'auto'
                 });
             }

如果你想设置顶部的软件:0和底部:自动你必须在此之后放回头。如果你的意思是只设置顶部和底部,如果它不是真的,那么你就错过了其他的东西:

if ($window.width() <= 770) {
                 return;
             }else{
                 $StickyBox.css({
                     top: '0',
                     bottom: 'auto'
                 });
             }

也许你的意思是

if ($window.width() <= 770) {

                 $StickyBox.css({
                     top: '0',
                     bottom: 'auto'
                 });
                 return;
             }

答案 1 :(得分:0)

<强> 1

我无法确定哪些行是7,9和10.但它与您为变量赋值的方式有关。它们可以用逗号分隔:

var gap = $window.height() - $StickyBox.height() - 10,
    footer = 288 - $window.scrollBottom(),
    scrollTop = $window.scrollTop();

<强> 2

当您返回时,其余方法未执行。因此$StickyBox.css()永远不会被召唤。如果$window.width() <= 770true。我相信您要么删除.css()来电,要么在被叫之后返回。

if ($window.width() <= 770) {
   return;
} else {
   $StickyBox.css({
      top: '0',
      bottom: 'auto'
   });
}