将选择器添加到已存储在变量中的对象

时间:2013-09-29 18:13:05

标签: jquery variables object syntax

我是jQuery的新手,如果我的词汇有误,请道歉,请纠正我,这样我就能学会正确的方法。

我正在尝试使用最佳做法来优化性能。我被告知在可能的情况下将静态对象存储在变量中。我正在尝试存储父对象#mytable,然后从那里向下导航到子对象。

var count=1;
$('#eachselector').each(function(){

  var MyTable = $('#mytable'+count);
  $(MyTable+' td[condition=true][condition2=true]').attr('do', 'stuff');
  $(MyTable+' table[condition=true][condition2=true]').attr('do', 'stuff');

  count++;
});

这给了我错误“未捕获的异常:语法错误,无法识别的表达式:[object Object]”。

我怀疑我在my()内部调用时将MyTable视为一个字符串,但不确定语法应该是什么样的。

谢谢!

2 个答案:

答案 0 :(得分:4)

请改用:

var MyTable = $('#mytable'+count);
MyTable.find('td[condition=true][condition2=true]').attr('do', 'stuff');
MyTable.find('table[condition=true][condition2=true]').attr('do', 'stuff');

这使用jQuery的.find()函数来搜索$('#mytable'+count)的后代。您的代码无效的原因是MyTable是一个jQuery对象而不是字符串。

您也可以使用$('selector', MyTable),但在内部它只是映射到.find()功能。

答案 1 :(得分:0)

使用以下代码:

  $('td[condition=true][condition2=true]', MyTable).attr('do', 'stuff');

这表示将条件1和条件2的所有td的'do'属性设置为true,以赋值'stuff'