2011-07-26 14 views
2

JS Scrollpaneと呼ばれるjQuery用のカスタムスクロールバーライブラリを使用していますが、すでにスクロールバーを持つDIVにスクロールバーを適用しようとすると予期しない結果になります。だから私がチェックしたいのは、クラス ".jspScrollable"が適用されているかどうかです。もしそうなら、スクロールを適用しないでください。十分に簡単ですね。jQuery .hasClassと動的に追加されたクラス

".jspScrollable"クラスはスクリプトによって動的に追加され、jQueryのhasClassメソッドは動的ではなく静的なので、新しいクラスが追加されていないようです。ダイナミッククラスが要素に追加されたときに確認できる方法はありますか?

pageEls.bigcol行は気にしないでください。それはちょっとオブジェクトです。私のコードを最適化するためにセレクタをすべて保存しています。現在、サイトには約4000行のJSがあります。

ここに私のコードはこれまでです:

function initScrollers() 
{ 
    pageEls.bigcol = $(".bigcol").filter(':visible'); 

    var settings = { 
     animateScroll: true, 
     autoReinitialise: true, 
     hideFocus: true, 
     verticalGutter: 15 
    }; 

    if (pageEls.bigcol.length && !pageEls.bigcol.hasClass('noScroller')) 
    { 
     if (!pageEls.bigcol.hasClass('.jspScrollable')) 
     { 
      if (pageEls.bigcol.height() > 290) 
      { 
       pageEls.bigcol.jScrollPane(settings); 
      } 
     } 
    } 
} 

答えて

5

あなたはhasClassメソッドの引数に.を必要としません。

変更:

if (!pageEls.bigcol.hasClass('jspScrollable')) 
2

if (!pageEls.bigcol.hasClass('.jspScrollable')) 

でください。 hasClass()引数でクラス名をオフにします。それはちょうど次のようになります。jsFiddleでここ

if (!pageEls.bigcol.hasClass('jspScrollable')) 

作品:ちなみにhttp://jsfiddle.net/jfriend00/TsfQ6/

$("#test").addClass("testClass"); 
alert($("#test").hasClass("testClass")); // alerts true 

、あなたはあなたの三重これにif文を入れ子に崩壊することができます:

if (pageEls.bigcol.length && 
     !pageEls.bigcol.hasClass('noScroller') && 
     !pageEls.bigcol.hasClass('.jspScrollable') && 
     pageEls.bigcol.height() > 290) 
    { 
     pageEls.bigcol.jScrollPane(settings); 
    } 
1

あなたはしないでくださいhasClassにドットが必要です。試してみてください:

!pageEls.bigcol.hasClass('jspScrollable') 
関連する問題