我一直在搜索互联网,试图找到一种方法来使用jQuery。我的情况是这样的,我在外部scripts.js文件中有一个tablesorter函数(使用jQuery插件tablesorter),如下所示:
$(function() {
$(aTable).tablesorter({
// Go through each column and sort data according to type of data in the column
});
});
在我的html文件中,我在脑中声明如下
<script type="text/javascript" src="starterkit/jquery-1.3.2.js"></script>
<script type="text/javascript" src="starterkit/jquery.tablesorter.js"></script>
<script type="text/javascript" src="starterkit/scripts.js"></script>
<script type="text/javascript">
var aTable = $("#myTable");
var columns = $("#myTable tbody th:").length;
</script>
我想要做的是将aTable和columns变量传递给外部函数,并使用for循环遍历每一列以确定 a)如果列是否已排序且 b)如果要对其进行排序,列中的数据类型是什么?根据这些数据添加一个特殊的解析器,即如果列包含日期,添加日期解析器等等。我完全被卡住,任何提示都会受到赞赏。
更新
@ Chad Bird,这是完整的代码,因为我最初为一个表实例提供了它,我还包括了我正在使用的示例表:
$(function() {
$(aTable).tablesorter({
// pass the headers argument and passing a object
headers: {
// place usLongDate parser in date column for proper sorting
2 : { sorter: "usLongDate" },
// assign the fourth column (we start counting zero)
3: {
// disable it by setting the property sorter to false
sorter: false
},
// assign the eighth column (we start counting zero)
7: {
// disable it by setting the property sorter to false
sorter: false
}
}
});
});
样本表
<table id="myTable" summary="Table is used to list available workshops" cellspacing="0">
<thead>
<tr>
<th><a rel = "Header" href="#" title="Sort column in decending order" class="sort-down">Title</a></th>
<th><a rel = "Header" href="#" title="Sort column in ascending order" class="sort-down">Instructor</a></th>
<th><a rel = "Header" href="#" title="Sort column in decending order" class="sort-up">Date</a></th>
<th id="1">Start/End</th>
<th><a rel = "Header" href="#" title="Sort column in decending order" class="sort-up">Seats Available</a></th>
<th><a rel = "Header" href="#" title="Sort column in decending order" class="sort-up">Enrolled</a></th>
<th><a rel = "Header" href="#" title="Sort column in decending order" class="sort-up">Pre-Requisites</a></th>
<th id="1">Workshop Actions</th>
</tr>
</thead>
<tbody>
<tr>
<td>Basic Economics for CEOs</td>
<td>George Washington</td>
<td>March 2, 2009</td>
<td>9:00am - 11:00am</td>
<td>0 / 20</td>
<td></td>
<td></td>
<td>Details</td>
</tr>
<tr>
<td>Intro. to Psychology</td>
<td>Jimi hendrix</td>
<td>March 6, 2009</td>
<td>10:00am 12:00pm</td>
<td>11 / 15</td>
<td>Enrolled</td>
<td></td>
<td>Details</td>
</tr>
<tr>
<td>Improving the Workplace</td>
<td>Dr. Manhattan</td>
<td>March 20, 2009</td>
<td>3:00pm - 4:30pm</td>
<td>12 / 18</td>
<td>Enrolled</td>
<td></td>
<td>Details</td>
</tr>
<tr>
<td>Music appreciation</td>
<td>Tupac Shakur</td>
<td>March 21, 2009</td>
<td>10:30am - 12:30pm</td>
<td>20 / 25</td>
<td></td>
<td></td>
<td>Details</td>
</tr>
</tbody>
</table>
基本上,我正在努力实现它,所以实现它的任何人只需要担心为所有表提供一致的名称,即所有表都被命名为“myTable”。并且该函数负责计算列数,确定(通过在表头中搜索id =“1”)是否将列设置为sorter:false,或者,如果确实需要对列进行排序,则确定类型列中的数据,即列是否包含日期,然后添加usLongDate解析器等。
答案 0 :(得分:1)
也许我误解了你想要做的事情,但我认为tablesorter已经拥有了你想要创造的功能。您可以在初始化tablesorter时定义每个列的排序解析器,或禁用某些列可用作排序方法。如果您愿意,我可以添加一些代码示例,但是您能否首先澄清这是否真的是您想要做的?
如果你只是想初始化tablesorter,就像skurpur说的那样,你只是按照错误的顺序做事。你似乎也错过了几个</script>
标签,但是当你在这里添加标签时,你可能只是从代码中删除了这些标签。
答案 1 :(得分:0)
如果您使用aTable
等内联JavaScript后包含外部函数,则应该全部设置。