0

我是 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]”。

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

谢谢!

4

2 回答 2

5

改用这个:

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()函数。

于 2013-09-29T18:14:13.487 回答
0

使用以下代码:

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

这表示将所有条件 1 和条件 2 的 td 的“do”属性设置为真值“stuff”

于 2013-09-29T18:17:16.703 回答