Jquery 向表头添加元数据解析器

Jquery 向表头添加元数据解析器,jquery,Jquery,这是一个正在进行的项目,我即将完成。我一直在为jQueryt开发一个基于tablesorter插件的定制表分类器。谢天谢地,事情差不多完成了。我的最后一个问题是,我有一个表格标题如下: <th class="blue_bg"><a rel = "Header" href="#" title="Sort column in decending order" class="">Seats Available</a></th> //th wit

这是一个正在进行的项目,我即将完成。我一直在为jQueryt开发一个基于tablesorter插件的定制表分类器。谢天谢地,事情差不多完成了。我的最后一个问题是,我有一个表格标题如下:

<th class="blue_bg"><a rel = "Header" href="#" title="Sort column in decending order" class="">Seats Available</a></th>
    //th without a class automatically get sorting disabled
    $("th[class='']").each(function(){
    $(this).addClass("{sorter: false}");
});
我还有一个可以遍历并搜索特定字符串,该字符串指示是否应禁用列排序:

    //Add disabling parser to each header with a disable class
    $("th[class*='csuci.sortable.false']").each(function(){
    $(this).removeClass("csuci.sortable.false").addClass("{sorter: false}");
});
基本上,我希望它设置为,除非用户在默认情况下或通过用户定义的字符串另有指定,否则列将禁用排序。总而言之,我已经禁用了那些根本没有类并且类指定了禁用字符串的列的排序。我还想要第三个条件,其中用户可以在标题中包含任何其他类,在本例中,用户指定一个类以使列的背景为蓝色。但是,我不确定向这个示例头添加禁用解析器需要什么语法。感谢您的帮助,提前感谢

更新:这是我的完整函数,它根据th class属性中的或不在其中的内容添加解析器:

$(function(){
    //Add disabling parser to each header with a disable class
    $("th[class*='csuci.sortable.false']").each(function(){
        $(this).removeClass("csuci.sortable.false").addClass("{sorter: false}");
    });

    //th without a class automatically get sorting disabled
    $("th[class='']").each(function(){
        $(this).addClass("{sorter: false}");
    });

    //Add parser to each table that has a class="csuci.sortable."
    $("th[class*='csuci.sortable.date']").each(function(){
        $(this).removeClass("csuci.sortable.date").addClass("{sorter: 'usLongDate'}");
    });

    $("th[class*='csuci.sortable.percent']").each(function(){
        $(this).removeClass("csuci.sortable.date").addClass("{sorter: 'percent'}");
    });

    $("th[class*='csuci.sortable.ip']").each(function(){
        $(this).removeClass("csuci.sortable.date").addClass("{sorter: 'ip-address'}");
    });

    $("th[class*='csuci.sortable.url']").each(function(){
        $(this).removeClass("csuci.sortable.date").addClass("{sorter: 'url'}");
    });

    $("th[class*='csuci.sortable.money']").each(function(){
        $(this).removeClass("csuci.sortable.date").addClass("{sorter: 'currency'}");
    });

    $("th[class*='csuci.sortable.time']").each(function(){
        $(this).removeClass("csuci.sortable.date").addClass("{sorter: 'time'}");
    });
});

那么,您希望启用分拣机的案例是什么?听起来分拣机启用的唯一情况是直接真标志。您可能只需要使用

如果排序仅由true标志启用,并且需要为所有元素设置分类器,则可以匹配所有列并使用条件设置标志

$("th").each(function(){
    var sortEnabled = $this.hasClass('csuci.sortable.true');
    $(this).addClass("{sorter: "+sortEnabled+"}");
});

我设法找到了一种解决方法,我只是在开始时添加了一个遍历函数,将禁用解析器添加到每个表头,然后每次后续遍历都会删除禁用解析器,检查硬编码字符串并添加必要的解析器:

$(function(){

    //Add disable parser to all headers
    $("th").each(function(){
        $(this).addClass("{sorter: false}");
    });

    //Add disable parser to each header with a disable class
    $("th[class*='csuci.sortable.false']").each(function(){
        $(this).removeClass("csuci.sortable.false").addClass("{sorter: false}");
    });

    //th without a class automatically gets sorting disabled
    $("th[class='']").each(function(){
        $(this).addClass("{sorter: false}");
    });

    //Add parser to each table that has a class="csuci.sortable.date"
    $("th[class*='csuci.sortable.date']").each(function(){
        $(this).removeClass("{sorter: false}");
        $(this).removeClass("csuci.sortable.date").addClass("{sorter: 'usLongDate'}");
    });
    //Add parser to each table that has a class="csuci.sortable.percent"
    $("th[class*='csuci.sortable.percent']").each(function(){
        $(this).removeClass("{sorter: false}");
        $(this).removeClass("csuci.sortable.percent").addClass("{sorter: 'percent'}");
    });
    //Add parser to each table that has a class="csuci.sortable.ip"
    $("th[class*='csuci.sortable.ip']").each(function(){
        $(this).removeClass("{sorter: false}");
        $(this).removeClass("csuci.sortable.ip").addClass("{sorter: 'ip-address'}");
    });
    //Add parser to each table that has a class="csuci.sortable.url"
    $("th[class*='csuci.sortable.url']").each(function(){
        $(this).removeClass("{sorter: false}");
        $(this).removeClass("csuci.sortable.url").addClass("{sorter: 'url'}");
    });
    //Add parser to each table that has a class="csuci.sortable.money"
    $("th[class*='csuci.sortable.money']").each(function(){
        $(this).removeClass("{sorter: false}");
        $(this).removeClass("csuci.sortable.money").addClass("{sorter: 'currency'}");
    });
    //Add parser to each table that has a class="csuci.sortable.time"
    $("th[class*='csuci.sortable.time']").each(function(){
        $(this).removeClass("{sorter: false}");
        $(this).removeClass("csuci.sortable.time").addClass("{sorter: 'time'}");
    });
});

也许这不是最干净的方法,但它确实有效。感谢StackOverflow的所有人,他们为我提供了关于jQuery工作原理的宝贵见解,这真的是一个很棒的库。

Hey gradbot,真的没有我要添加的特殊布尔类,只是我硬编码每个遍历函数以查找的任意字符串。然后,它根据类中的字符串添加一个排序解析器?
$(function(){

    //Add disable parser to all headers
    $("th").each(function(){
        $(this).addClass("{sorter: false}");
    });

    //Add disable parser to each header with a disable class
    $("th[class*='csuci.sortable.false']").each(function(){
        $(this).removeClass("csuci.sortable.false").addClass("{sorter: false}");
    });

    //th without a class automatically gets sorting disabled
    $("th[class='']").each(function(){
        $(this).addClass("{sorter: false}");
    });

    //Add parser to each table that has a class="csuci.sortable.date"
    $("th[class*='csuci.sortable.date']").each(function(){
        $(this).removeClass("{sorter: false}");
        $(this).removeClass("csuci.sortable.date").addClass("{sorter: 'usLongDate'}");
    });
    //Add parser to each table that has a class="csuci.sortable.percent"
    $("th[class*='csuci.sortable.percent']").each(function(){
        $(this).removeClass("{sorter: false}");
        $(this).removeClass("csuci.sortable.percent").addClass("{sorter: 'percent'}");
    });
    //Add parser to each table that has a class="csuci.sortable.ip"
    $("th[class*='csuci.sortable.ip']").each(function(){
        $(this).removeClass("{sorter: false}");
        $(this).removeClass("csuci.sortable.ip").addClass("{sorter: 'ip-address'}");
    });
    //Add parser to each table that has a class="csuci.sortable.url"
    $("th[class*='csuci.sortable.url']").each(function(){
        $(this).removeClass("{sorter: false}");
        $(this).removeClass("csuci.sortable.url").addClass("{sorter: 'url'}");
    });
    //Add parser to each table that has a class="csuci.sortable.money"
    $("th[class*='csuci.sortable.money']").each(function(){
        $(this).removeClass("{sorter: false}");
        $(this).removeClass("csuci.sortable.money").addClass("{sorter: 'currency'}");
    });
    //Add parser to each table that has a class="csuci.sortable.time"
    $("th[class*='csuci.sortable.time']").each(function(){
        $(this).removeClass("{sorter: false}");
        $(this).removeClass("csuci.sortable.time").addClass("{sorter: 'time'}");
    });
});