2011-11-02 9 views
7

私のウェブサイトにQuicksandスクリプトを含めることを試みていますが、失敗しました。このスクリプトの
Uncaught TypeError:未定義のメソッド 'split'を呼び出すことができません

65 Uncaught TypeError: Cannot call method 'split' of undefined
Firebugのは、私にこのエラーが発生します

jQuery.noConflict(); 
jQuery(document).ready(function($){ 
    // Clone applications to get a second collection 
    var $data = $("#portfolio-items").clone(); 

    //NOTE: Only filter on the main portfolio page, not on the subcategory pages 
    $('#portfolio-terms ul li').click(function(e) { 
     $("ul li").removeClass("active"); 
     // Use the last category class as the category to filter by. This means that multiple categories are not supported (yet) 
     var filterClass=$(this).attr('class').split(' ').slice(-1)[0]; 
jquery.custom.js:65 Uncaught TypeError: Cannot call method 'split' of undefined (repeated 6 times) 

     if (filterClass == '.all current') { 
      var $filteredData = $data.find('#portfolio-'); 
     } else { 
      var $filteredData = $data.find('#portfolio-[data-type=' + filterClass + ']'); 
     } 
     $("#portfolio-items").quicksand($filteredData, { 
      duration: 800, 
      easing: 'swing', 
     });  
     $(this).addClass("active");    
     return false; 
    }); 
}); 


こちらをご覧ください:http://stakk.it/
エラーは何ですか?

ありがとう、私の悪い英語のために申し訳ありません!

+0

は、なぜあなたはfilterClassはおそらく '等しいcurrent' .ALLことができると思うだろう私のために働いたtoString方法

var filterClass = $(this).attr('class').toString(); filterClass = filterClass.split(' '); 

を使用していますか? – Neil

答えて

18

undefined戻り.attr("class")場合.splitStringオブジェクトのメソッドであるとundefinedに呼び出すことはできませんので、あなたはそれに.splitを呼び出すことはできません。 .attr("class")の結果を保存し、undefinedでなければ分割する必要があります。

var filterClass = $(this).attr('class'); 
filterClass = filterClass ? filterClass.split(' ').slice(-1)[0] : ''; 

filterClassには、期待どおりの内容、または空の文字列が含まれます。

編集:$(this).attr('class')this.classNameに置き換えて、削除された解答から削除することができます。

+0

ありがとうございました。今問題を解決しましたが、画像が消える理由はわかりません。あなたはここでそれを見ることができます:http://stakk.it/ – humanbeing

0

別の解決策は、それが

関連する問題