将变量从html文件传递到外部jQuery函数

时间:2009-04-22 18:45:16

标签: jquery

我一直在搜索互联网,试图找到一种方法来使用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解析器等。

2 个答案:

答案 0 :(得分:1)

也许我误解了你想要做的事情,但我认为tablesorter已经拥有了你想要创造的功能。您可以在初始化tablesorter时定义每个列的排序解析器,或禁用某些列可用作排序方法。如果您愿意,我可以添加一些代码示例,但是您能否首先澄清这是否真的是您想要做的?

如果你只是想初始化tablesorter,就像skurpur说的那样,你只是按照错误的顺序做事。你似乎也错过了几个</script>标签,但是当你在这里添加标签时,你可能只是从代码中删除了这些标签。

答案 1 :(得分:0)

如果您使用aTable等内联JavaScript后包含外部函数,则应该全部设置。