我有一个我正在测试的函数,应该检查所有表头是否有特定的类,删除它并用另一个类替换它。我正在使用它来切换tablesorter插件的元数据解析器。我到目前为止的代码如下:
$(function(){
$("th").each(function(){
if ($(this).hasClass("{sorter: 'usLongDate'}")) {
$(this).removeClass("{sorter: 'usLongDate'}").addClass("{sorter: 'false'}");
}
});
});
$(function() {
$("table").tablesorter({});
});
我正在尝试将以下标头中的类解析器切换到false内联解析器。
<th class="{sorter: 'usLongDate'}"><a rel = "Header" href="#" title="Sort column in decending order" class="">Date</a></th>
当然这不是我唯一的标题,我只是在这个测试它,我假设其余的标题不应该受到影响,tablesorter仍然应该对它们进行排序。但是当我运行html文件时,没有任何作用。有什么我想念的吗?感谢。
注意:为了避免混淆,jQuery的tablesorter插件可以在表头的class属性中使用内联解析器,以确定列的排序方式和/或方式。
更新:试过文森特罗伯特的建议,遗憾的是它不起作用。关于addClass和removeClass是否可以处理这些。我有一个原始函数,能够将禁用解析器添加到所有类,
$("th[class='']").addClass("{sorter: 'false'}");
这来自Paolo Bergantino,效果很好。我只想尝试扩展它。
答案 0 :(得分:2)
如果我错了,请纠正我。但class =“{sorter:'usLongDate'}”不是有效的类名。类是由空格分隔的名称。 class =“class1 class2”表示该元素有两个类class1和class2而不是一个类。有效的类名称解释为here。
修改强>
如果您希望能够更改类,请使用attr而不是add / remove class
$(this).attr('class', 'myNewClass');
并删除使用:
$(this).removeAttr('class');
答案 1 :(得分:2)
我认为addClass()或removeClass()不能处理这类“类”。你应该直接访问“class”属性。
现在我不熟悉这个插件......
$(function(){
$("th").each(function(){
if ($(this).attr("class") == "{sorter: 'usLongDate'}") {
$(this).attr("class", "{sorter: 'false'}");
}
});
});
修改强>
只是浏览了文档,您可以使用选项方式而不是类方式:
$('table').tablesorter({
headers: $('th').map(function(i)
{
return { sorter: false /* or whatever you want based on $(this) content */ };
})
});
只要您在任何tablesorter()调用之前调用它,它就应该工作。
答案 2 :(得分:0)
你应该打电话吗
$("table").tablesorter({});
在尝试查看课程之前?我假设它是插入这些类名的插件?
答案 3 :(得分:0)
这可能就是你要找的东西。
$(document).ready(function() {
$("th[class*='usLongDate']").each(function(){
$(this).removeClass("{sorter: 'usLongDate'}").addClass("{sorter: false}");
});
$("table").tablesorter();
});
问题可能源于类用空格分隔的事实。从技术上讲,“{sorter:”和“'usLongDate'}”是两个不同的类。我不知道TableSorter究竟是如何处理它们的,但是删除“{sorter:”然后再添加它应该将它保持在“false}”旁边。