不能将动态变量用于JQuery函数

时间:2011-07-25 15:59:47

标签: javascript jquery

我想在某些时候禁用TableSorter插件。 这些有class =“disableSorter”,所以我这样做:

$('.disableSorter').each(function(index) {

    $('.tablesorter').tablesorter({ headers: { index: { sorter: false} } }); 

});

其中index:是函数中传递的索引变量。 事情是“索引”没有被数字取代(例如0:,1:5:等等)

感谢您的帮助!

=====编辑=====

感谢JaredPar,您的解决方案对动态变量是正确的。我不得不编辑代码,因为我没有得到th元素的索引,而是每个循环的索引。

这是我的最终代码

var inner = {};
$('.disableSorter').each(function() {
    inner[$('.tablesorter th').index(this)] = { sorter: false };
});

$('.tablesorter').tablesorter({ headers: inner  }); 

2 个答案:

答案 0 :(得分:4)

这里的问题是你试图在javascript不查找值的地方使用该值,而是将文字用作名称。您需要使用[]语法根据值创建命名成员。

尝试以下

$('.disableSorter').each(function(index) {
  var inner = {};
  inner[index] = { sorter: false };
  $('.tablesorter').tablesorter({ headers: inner); 

});

答案 1 :(得分:1)

试试这个

var obj = null;
$('.disableSorter').each(function(index) {
    obj = {};
    obj.headers = {};
    obj.headers[index] = { sorter: false };
    $('.tablesorter').tablesorter(obj); 

});