如何调试和修复此问题?

时间:2011-06-15 19:11:23

标签: javascript jquery

在这个JSFiddle中

http://jsfiddle.net/littlesandra88/mzPxN/

我是否尝试使用tablesorter plugin对列进行排序。

问题

点击“N”对数字列进行排序就好了。

单击“已签名”也会对复选框列进行排序,但如果取消选中其中一个复选框,则它们将无法正确排序。

使用this

点击复选框后,添加01的技巧接缝
<td>
    <span class="hidden">1</span>
    <input type="checkbox" name="x" value="y">
</td>

$(document).ready(function() {

    $('#tableid input').click(function() {
         var order = this.checked ? '1' : '0';
         $(this).prev().html(order);
    })

})

并使用this作为排序算法

ts.addParser({
        id: 'input',
        is: function(s) {
            return s.toLowerCase().match(/<input[^>]*checkbox[^>]*/i); ;
        },
        format: function(s) {
            var integer = 0;
            if (s.toLowerCase().match(/<input[^>]*checked*/i)) {
                integer = 1;
            }
            return integer;
        },
        type: "numeric"
    });

但我收到错误not well formed

我是否正确地实现了html和JQuery?

如果是这样,我该如何调试和修复它?

2 个答案:

答案 0 :(得分:1)

您的案例中隐藏的跨度是在更改之后

$(this).prev().html(order)

$(this).next().html(order)

Updated fiddle

答案 1 :(得分:1)

你不需要花哨的格式化程序或任何东西:

看我的小提琴编辑:

http://jsfiddle.net/CgMZ9/

将复选框放在复选框之前:)

默认情况下,它会查看字段中首先出现的任何文本,这将是您的0或1,并对其进行排序:)