亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

jQuery 淡入和淡出消息列表

jQuery 淡入和淡出消息列表

吃雞游戲 2023-12-04 16:05:48
我嘗試修改下面的代碼以淡出消息列表,我需要它在最后一條消息處停止,我設法做到了,但最后一條消息不斷淡入和淡出,我不知道如何防止它像暗淡的燈泡一樣褪色。<script>jQuery(function($) {$(document).ready(function(){      $("button").click(function(){    $("#demo").fadeTo( "slow", 1 );        (function($){        $.fn.extend({            rotaterator: function(options) {                var defaults = {                    fadeSpeed: 500,                    pauseSpeed: 100,                    child:null                };                var options = $.extend(defaults, options);                return this.each(function() {                      var o =options;                      var obj = $(this);                      var items = $(obj.children(), obj);                      items.each(function() {$(this).hide();})                      if(!o.child){var next = $(obj).children(':first');                      }else{var next = o.child;                      }                      $(next).fadeIn(o.fadeSpeed, function() {                            $(next).delay(o.pauseSpeed).fadeOut(o.fadeSpeed, function() {                                var next = $(this).next();                                if (next.length == 0){                                        next = $(obj).children(':last');                                }                                $(obj).rotaterator({child : next, fadeSpeed : o.fadeSpeed, pauseSpeed : o.pauseSpeed});                            })                        });                });            }        });    })(jQuery);     $(document).ready(function() {            $('#rotate').rotaterator({fadeSpeed:500, pauseSpeed:100});     });      });    });});</script>    <button class="btn" type="submit" style="min-width: 200px;margin-top: 40px;margin-bottom: 0px;" onclick="myFunction()">Sign Up!</button>    <h1 id="demo" style="opacity:0;"> I am <div id="rotate"> <div>awesome.</div> <div>invincible.</div> <div>unbeatable.</div> <div>indestructible.</div> </div> </h1>
查看完整描述

1 回答

?
慕田峪7331174

TA貢獻1828條經驗 獲得超13個贊

這是一些非常奇特的代碼!我可能會嘗試一個更簡單的解決方案,但你擁有的是一個漂亮且靈活的 jQuery 函數。

這是代碼的 JSFiddle,僅進行了一項更改 - 在顯示最后一個元素后停止動畫,這正是您所需要的。

問題是這段代碼:

if (next.length == 0) {
    next = $(obj).children(':last');
}

表示當沒有要設置動畫的“下一個”元素時,請使用要設置動畫的集合中的最后一個元素(#rotate在您的示例中)。因此,一旦它到達最后一個項目并且找不到另一個項目,它就會循環,重新激活最后一個項目,并且永遠不會停止。

為了解決這個問題,我:

  • 刪除了上面顯示的代碼;

  • 添加了一個新的測試,以便當我們要設置動畫的項目是集合中的最后一個項目時,在將其淡出并尋找另一個淡入之前盡早退出。為了進行該測試,.index()在設置,并將其與元素總數進行比較。索引是從零開始的,而計數當然不是從零開始的,所以我需要在索引值上加 1:

    if (next.index() +1 === items.length) {
        return;
    }

現在您的代碼可以按您的預期運行。

但是該代碼有一些問題需要修復:

  • 該按鈕有一個onclick="myFunction()",但myFunction()未定義。AFAICT buttonJS 中的點擊處理程序就是您所需要的,并且比使用內聯onClick處理程序更好,所以我刪除了它。

  • AFAIKjQuery(function($) {$(document).ready(function() {基本上是相同的,并且應該只使用一個。

  • 同樣,無需將 jQuery 函數定義包裝在另一個自執行的(function($) {.

  • 不應在單擊處理程序內定義 jQuery 函數定義。

  • 對 run 的實際調用rotaterator()包裝在 a 內$(document).ready(function() {,但代碼已經嵌套在其中另一個內,它們不應該像那樣嵌套/加倍。

  • 小事 - 該next變量被定義為 jQuery 對象,因此您可以像使用它一樣next.fadeIn(),而無需像使用它一樣$(next)。

  • 在點擊處理程序中,此代碼會淡入整個 h1:

    $("#demo").fadeTo("slow", 1);

    我猜你有一些 CSS 使它最初不可見?我已經添加了。

這是另一個包含所有這些更改的 JSFiddle。


查看完整回答
反對 回復 2023-12-04
  • 1 回答
  • 0 關注
  • 138 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號