0

我正在尝试优化代码但遇到一些错误。这些正确执行:

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[] 吗?

4

2 回答 2

0

您得到的错误是说window[trType]变量中有一个 javascript 对象,当它运行时window[trType] + ' .stat'它不知道该怎么做,因为没有定义 Object + 字符串运算符。

尝试使用window[trType].find(). jQuery.find()方法的工作方式与$()使用上下文时相同。因此,window[trType].find(".stat");将找到所有具有 stat 类的元素,它们是window[trType].

您也可以替换Array.prototype.forEach.call($.each(

如果你打算这样做,你可以使用:

window[trType].find('.stat').each(function(td){
于 2014-12-03T01:48:19.260 回答
0

好吧,只需组合所有选择器:

$('ZA1 .stat, ZA2 .stat, ZA3 .stat').each(function(i, td) {
    // do stuff
});

如果你想优化这段代码,你不妨使用.querySelectorAll()而不是使用半 jQuery / 半 JavaScript。

于 2013-04-19T18:05:58.387 回答