在鼠标悬停时暂停新闻自动收报机

时间:2014-12-27 12:29:29

标签: javascript jquery

我正在制作一个在这个jsfiddle上发现的新闻自动收报机,但它不能按我的意愿工作。问题是:

  1. 因为我增加了所有div的宽度和高度。它没有正常工作,最后一个div在第二轮新闻中重叠。

  2. 主要div内的新闻div不是循环的第一个新闻应该是最后一个。

  3. 它不会暂停。

  4. 这是的小提琴 here

    <script>
      window.verticalScroller = function ($elem) {
      var top = parseInt($elem.css('top'));
      var temp = - 1 * $('#verticalScroller > div').height();
      if (top < temp) {
        top = $('#verticalScroller').height()
        $elem.css('top', top);
      }
      $elem.animate({
        top: (parseInt(top) - 60)
      }, 600, function () {
        window.verticalScroller($(this))
      });
    }
    $(document).ready(function () {
      var i = 0;
      $('#verticalScroller > div').each(function () {
        $(this).css('top', i);
        i += 60;
        window.verticalScroller($(this));
      });
    });
    
    </script>
    

    我正在应用这个,因为它不需要任何jquery。如果我使用带有jquery和插件的自动收报机,以前的jquery即使在不使用冲突方法之后也不起作用。请帮助我解决这个问题。

    更新

    <div id="verticalScroller">
    <div style="position: relative;height:200px;width:352px;">1 Lorem ipsum dolor sit</div>
    <div style="position: relative;height:200px;width:352px;">2 Lorem ipsum dolor sit</div>
    <div style="position: relative;height:200px;width:352px;">3 Lorem ipsum dolor sit</div>
    <div style="position: relative;height:200px;width:352px;">4 Lorem ipsum dolor sit</div>
    </div>
    

    css update:

    #verticalScroller {
    position: absolute;
    width:352px;
    height: 380px;
    border: 1px solid red;
    overflow: hidden;
    }
    #verticalScroller > div {
    position:absolute;
    width:50px;
    height:50px;
    border: 1px solid blue;
    overflow:hidden;
    }
    

1 个答案:

答案 0 :(得分:0)

您可以通过以下方式使用条件创建停止:

window.verticalScroller = function ($elem) {
    if (window.stop == false) {
        var top = parseInt($elem.css("top"));
        var temp = -1 * $('#verticalScroller > div').height();
        if (top < temp) {
            top = $('#verticalScroller').height()
            $elem.css("top", top);
        }
        $elem.animate({
            top: (parseInt(top) - 60)
        }, 600, function () {
            window.verticalScroller($(this))
        });
    } else {
        setTimeout(function () {
            window.verticalScroller($elem);
        }, 600);
    }
}


$(document).ready(function () {
    window.stop = false;
    var i = 0;
    $("#verticalScroller > div").each(function () {
        $(this).css("top", i);
        i += 60;
        window.verticalScroller($(this));
    });
    $("#verticalScroller").on('mouseenter', function () {
        window.stop = true;
    });
    $("#verticalScroller").on('mouseleave', function () {
        window.stop = false;
    });
});

<强> Working Fiddle