向已经存储在变量中的对象添加选择器

Joe*_*Joe 0 variables syntax jquery object

我是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++;
});
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢!

Joe*_*Joe 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');
Run Code Online (Sandbox Code Playgroud)

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

您也可以使用,$('selector', MyTable)但在内部它仅映射到该.find()函数。