2009-05-20 52 views
0

这是一个正在进行的项目,我即将完成。我一直在开发一个基于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}"); 
}); 

基本上,我想它设置使得,除非用户另有指定,以默认值或用户定义的字符串,一个列将已排序禁用。因此,要回顾一下,我排序禁用的列根本没有类,并有一个类,指定一个禁用字符串。我还想要第三个条件,其中用户可以在标题中包含任何其他类,在本例中,用户指定一个类以使该列的背景变为蓝色。但是,我不确定我需要添加禁用解析器到这个示例头文件的语法。帮助表示感谢,提前感谢。

UPDATE:这是我这增加解析器基于热点问题研究的中,或者不在,第i个类属性的全部功能:

$(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'}"); 
    }); 
}); 

回答

1

那么,什么是你要能够与分拣机的情况下?这听起来像分拣机启用的唯一情况是一个直接真正的标志。您可能只需要使用not

$("th:not([class*='csuci.sortable.true'])").each(function(){ 
    $(this).addClass("{sorter: false}"); 
}); 

如果排序只能由真正的标志启用,你需要设置分拣机的所有元素,那么你可以匹配所有列和使用条件来设置该标志。

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

嘿gradbot,真的没有我添加的特殊布尔类,只是任意字符串,我硬编码每个遍历函数寻找。然后它会根据类中的字符串添加排序解析器。 – kingrichard2005 2009-05-20 18:26:32

0

我设法找到解决的办法,我只是在那个添加禁用解析器每一个表头开头加上穿越功能,则每个随后遍历删除禁用解析器,检查硬编码串并增加了必要的解析器:

$(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工作原理的宝贵见解,它确实是一个宏伟的图书馆。