JQuery TableSorter - ошибка дефиса - PullRequest
1 голос
/ 16 марта 2012

Я привел очень простой пример, и когда я использую дефис в первом <tr> <td> (первая строка, первая ячейка), tableorter больше не работает. Я использую jquery 1.7.1, а последний tablesorter.min.js

Примеры кодов:

Работы -> Без дефиса: http://jsfiddle.net/6gjLs/4/
Работает -> Дефис во втором ряду : http://jsfiddle.net/8Wet2/4/
Не работает -> Дефис в первом тд в первом ряду: http://jsfiddle.net/YkaCv/4/

Код, который вы видите, точно такой же на 3 примерах, только данные таблицы изменяются.

Кто-нибудь испытывал такую ​​же проблему? Есть обходной путь?

Ответы [ 3 ]

3 голосов
/ 20 марта 2012

На самом деле, когда таблица сортировщика пытается определить, какие данные содержатся в каждом столбце, она путается с чертой ... это текст или знак минуса? Если вы запустите плагин с debug, установленным на true, вы увидите, что он устанавливает парсер на digit. Вот обновленная демоверсия .

Так что лучшим нехакерским решением было бы установить синтаксический анализатор заголовка на текст:

$(".tableresult").tablesorter({
    headers: {
        0: { sorter:'text' }
    }
});

И, наконец, пожалуйста, не используйте $().ready(function(){}); в качестве функции готовности документа. В последних версиях jQuery он все еще поддерживается, но не рекомендуется использовать, и поддержка, скорее всего, будет удалена в будущем. Вместо этого используйте $(function(){}).

0 голосов
/ 16 марта 2012

Эй, вот причина, по которой это не работает и хакерское решение.

Причина:

Таким образом, код сортировщика таблиц заботится о тире -.

https://github.com/jbritten/jquery-tablesorter-filter/commit/378b7ef36e9201df4ec6bd3fb2487e8c9ec9359f

но я читаю плагин и должен выяснить, почему эта скрытая первая строка разрешает его

Возможное решение:

a) Проверяется наличие хотя бы одного символа для начала анализа этого дефиса / тире (-) Если вам известна какая-либо кодировка HTML, которая может имитировать символ, который не появится. И Я пробовал с подчеркиванием (_), оно работает также. Я буду продолжать играть, но

b) * Если *, вы можете попробовать поместить это как первую строку, которая будет удивительной - создайте пустую строку вверху с некоторым содержанием, а затем вторую строку как тире

Working CODE: (In your JSFiddle - change your TBODY to this one and this should work man.

       <tbody>
 <tr style="display:none;">
                    <td>foobar</td>                                                                                          
                </tr>                
                <tr>
                    <td>-</td>                                                                                          
                </tr>
                <tr>
                    <td>B</td>                                               
                </tr>
                <tr>
                    <td>C</td>                                               
                </tr>
            </tbody>

Надеюсь, это поможет.

Приветствия

0 голосов
/ 16 марта 2012

Я не настолько увлечен таблицей сортировки, однако я обнаружил, что один простой обходной путь, который работает в вашем примере, состоит в том, чтобы всегда вставлять скрытые tr, td и вставлять A в верхнюю часть:

            <tr style="display:none">
                <td>A</td>                                                                                          
            </tr>      
...