我正在尝试优化代码,但却遇到了一些错误。这些执行正确:
Array.prototype.forEach.call( $('ZA1 .stat'), function( td ) {//ExcuteCode}
Array.prototype.forEach.call( $('ZA2 .stat'), function( td ) {//ExcuteCode}
Array.prototype.forEach.call( $('ZA19 .stat'), function( td ) {//ExcuteCode}
Array.prototype.forEach.call( $('ZA20 .stat'), function( td ) {//ExcuteCode}
试图压缩到这个,但得到错误:
for (var trType in allTr) {
//console.log(trType);
Array.prototype.forEach.call( $( window[trType]+' .stat'), function( td ) {
//Excute Code
}
在控制台中,我收到以下错误:
未捕获错误:语法错误,无法识别的表达式:[object Object] .stat
我可以在jquery选择器中使用window []吗?
答案 0 :(得分:0)
好吧,只需组合所有选择器:
$('ZA1 .stat, ZA2 .stat, ZA3 .stat').each(function(i, td) {
// do stuff
});
如果您想优化此代码,您也可以使用.querySelectorAll()
而不是使用半jQuery / half JavaScript。
答案 1 :(得分:0)
你得到的错误是window[trType]
变量中有一个javascript对象,当它运行window[trType] + ' .stat'
时,它不知道该做什么,因为没有对象+字符串运算符定义。
尝试使用window[trType].find()
。使用上下文时,jQuery .find()
方法与$()
的工作方式相同。所以window[trType].find(".stat");
会在window[trType]
中找到属于stat类的所有元素。
您也可以将Array.prototype.forEach.call(
替换为$.each(
如果你打算这样做,你可以使用:
window[trType].find('.stat').each(function(td){