0

Web サイトの div にスクロールバー プラグインを実装しようとしていますが、いくつかの問題に直面しています。まず第一に、次のように動作するはずでした:

jQuery(document).ready(function ($) {
    "use strict";
    $('.chat-messages').perfectScrollbar({suppressScrollX: true});
  });

しかし、私はそれを次のようにしか機能させることができませんでした:

$(window).load(function() {
    "use strict";
    $('.chat-messages').perfectScrollbar({suppressScrollX: true});
});

しかし、window.loadを使用すると、スクリプトが常に機能しているようには見えないか、少なくともスクロール バーが常に表示されるわけではありません。

私は js や jquery にあまり詳しくありませんが、src ファイルperfect-scrollbar.jsをフォルダーに挿入し、通常は次のように呼び出し<script src="http://domain.com/javascript/perfect-scrollbar.js"></script>ます。これは準備ができている別のドキュメントとの競合であると想定しているため、オンラインで解決策やその他のロード方法を検索したところ、競合がないことがわかり、次のように実装しようとしました。<script></script>

$.noConflict();
jQuery( document ).ready(function( $ ) {
     "use strict";
   $('.chat-messages').perfectScrollbar({suppressScrollX: true});
   });
});

それでも結果はありません。これが行う唯一のことは、Webサイトのすべてのjqueryが機能しなくなることです。誰でもこれで私を助けることができますか?前もって感謝します

4

3 に答える 3

0

問題は

jQuery(document).ready(function ($) {
    "use strict";
    $('.chat-messages').perfectScrollbar({suppressScrollX:    true});
});

$その識別子で匿名関数のパラメーターに名前を付けることにより、ローカルスコープで未定義のままにしているということです。jQuery はその関数に引数を渡しませんが、パラメーターの宣言によって のグローバル定義がマスクされます$。非競合モードを使用していない場合は、$すでにグローバル スコープで使用できるため、次のように動作するはずです。

$(document).ready(function () {
    "use strict";
    $('.chat-messages').perfectScrollbar({suppressScrollX: true});
});

余談ですが、noConflict のポイントは、jQuery の のエイリアスとして$の の使用とは異なるのグローバル定義に依存している可能性のある他のコードとの衝突を回避することです。$jQuery

于 2015-03-01T22:28:37.227 に答える
0

助けてくれてありがとう、私はここでこの回避策を見つけました:[src]

var visible = true;
setInterval(
function()
{
    if(visible)
        if($('#element').not(':hidden'))
        {
            visible = false;
            "use strict";
            $('.chat-messages').perfectScrollbar({suppressScrollX: true});
        }
    else
        if($('#element').is(':hidden'))
        {
            visible = true;
            // do something
        }
}, 1000);
于 2015-03-03T19:40:58.120 に答える