我是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视为一个字符串,但不确定语法应该是什么样的。
谢谢!
答案 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'