2014-09-30 37 views
3

我在無衝突模式下使用同位素v1.5.24和jQuery,並嘗試按數字排序數據,但它不起作用。同位素不排序

我已經在這裏設置了一個jsfiddle:http://jsfiddle.net/tgelles/esxw3kne/1/,你可以看到第一個項目應該是列表中的第三項。

同位素代碼是:

var $j = jQuery.noConflict(); 
$j(document).ready(function() { 
    //set isotope variables 
    var $container = $j('.section-container'); 
    filters = {}; 

    $container.isotope({ 
     getSortData: { 
      course_number: function ($elem) { 
       return parseInt($elem.find('.course-number').text(), 10); 
      } 
     }, 
     itemSelector: 'section', 
     layoutMode: 'straightDown' 
    }); 
    $container.isotope({ 
     sortBy: 'course_number' 
    }); 

FWIW的 '課程編號' sortBy實際上JSON從API,這在小提琴是簡單的HTML解碼。

回答

1

它看起來像你調用一個字符串parseInt像這樣:'AS.010.232'根據thisparseInt將返回NaN這樣的價值觀。從那裏引用:

如果第一個字符不能轉換爲數字,parseInt將返回NaN。

由於所有這些排序值都被解釋爲NaN它實際上可能會按照某種隨機順序對它們進行排序。

與其說parseInt的,儘量只直接返回文本:

getSortData: { 
    course_number: function ($elem) { 
     return $elem.find('.course-number').text(); 
    } 
}, 

這似乎在this updated fiddle是工作,也是幾乎相同的同位素對sorting手工錄入的例子。

+0

非常感謝! 但是,當我在活網站上嘗試此代碼時,它仍然不起作用。例如:[鏈接](http://krieger.jhu.edu/phbeta/undergraduate/courses/) – timmyg 2014-09-30 16:24:10

+0

看看該頁面的DOM,我沒有看到任何內容在'同位素'容器 – 2014-09-30 16:44:19

+0

put不同的是,儘管我知道這是排序,但它只是排序'沒有'。 – 2014-09-30 16:58:08