1

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

  1. 将此与前面的“var”语句结合起来,即第 7、9 和 10 行。
  2. 'Return' 之后的 Unreachable" - 如果在哪里($window.width() <= 770) { return;

这是脚本:

     //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

4

2 回答 2

1

问题是如果这个“如果”为真,那么它总是会返回,并且接下来的几行代码永远不会运行。

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

sof 如果你想设置 top:0 和 bottom: auto 你必须把 return 放在后面。如果您的意思是仅在不正确的情况下设置顶部和底部,那么您就错过了一个 else:

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

也许你的意思是

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

                 $StickyBox.css({
                     top: '0',
                     bottom: 'auto'
                 });
                 return;
             }
于 2013-10-23T18:21:34.293 回答
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'
   });
}
于 2013-10-23T18:22:48.787 回答