在需要时使用参数调用jquery函数,即不在页面加载时调用

时间:2011-11-17 10:07:21

标签: jquery

一个非常基本的问题......

我有一个在页面加载时触发的jquery函数:

$(document).ready(function () {
   // some code
   $('#filter').keyup(function() {

   });
}

代码过滤HTML表格中的第一列。我现在想要按nth列进行过滤,但我不想写两个非常相似的函数。

我可以将函数更改为接受单个参数,如下所示:

$(document).ready(function (column_num) {
   // some code
   $('#filter').keyup(function() {

   });
}

哪个好。但是,如何在我的HTML文件中执行该函数,为函数提供单个参数?

2 个答案:

答案 0 :(得分:2)

<强> HTML:

Filter 1:<input type="text" class="filter" data-filter-column="1">
Filter 2:<input type="text" class="filter" data-filter-column="2">
Filter 3:<input type="text" class="filter" data-filter-column="3">

<div id="test"></div>

<强> JavaScript的:

$(document).ready(function () {
   $('.filter').keyup(function(e) {
       var column_num = $(this).attr("data-filter-column");
       var filter_token = $(this).val();
       //filterCol(column_num, filter_token); 
       $("#test").text("Filter column " + column_num + " by token " + filter_token);
   });
});

在此处查看演示:http://jsfiddle.net/3cte4/2/

答案 1 :(得分:1)

我不完全确定我明白你想要完成什么,但我认为你需要这样的事情:

var handler = function(column_num) {
    switch (column_num) {
        ...
    }
}

$(document).ready(function () {
    $('#filter_for_column_1').keyup("column1", handler);
    $('#filter_for_column_2').keyup("column2", handler);
    $('#filter_for_column_3').keyup("column3", handler);
    ...
}