2011-11-02 20 views
7

Web sitemde Quicksand komut dosyasını eklemeye çalışıyorum ama başarısız oldum. Bu komut dosyası için
Yakalanmayan TypeError: Tanımlanmamış '' yöntem '' yöntemi çağrlanılamıyor

: 65 Uncaught TypeError: Cannot call method 'split' of undefined:
Kundakçı bana bu hata veriyor

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; 
    }); 
}); 


Buraya bakın: http://stakk.it/
hata nedir?

Teşekkür ederim ve benim kötü ingilizce için özür dilerim!

+0

Neden filterClass muhtemelen eşit 'current' .ALL olacağını düşünecektir? – Neil

cevap

18

undefined döner .attr("class") Eğer .splitString nesnenin bir yöntemdir ve undefined çağrıda olamaz çünkü, üzerinde .split arayamazsın.sonucunu saklamanız ve daha sonra undefined değilse bölünmesi gerekir.

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

şimdi filterClass beklediğiniz içeren veya boş bir dize olacaktır.

Düzenleme: this.className ile $(this).attr('class')'u değiştirebilir, kaldırılmış yanıttan çekebilirsiniz.

+0

Cevabınız için çok teşekkür ederim. Şimdi problemi çözdüm ama neden görüntülerin kaybolduğunu anlamıyorum. Burada görebilirsiniz: http://stakk.it/ – humanbeing

0

Başka bir çözüm

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

benim için çalıştı toString yöntem kullanıyor

İlgili konular