Jquery 向表头添加元数据解析器
这是一个正在进行的项目,我即将完成。我一直在为jQueryt开发一个基于tablesorter插件的定制表分类器。谢天谢地,事情差不多完成了。我的最后一个问题是,我有一个表格标题如下: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
<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'}");
});
});