使用变量代替调用jQuery选择器

时间:2014-11-18 00:34:53

标签: jquery variables jquery-selectors concatenation

var container = $("#container");
var row = $(".row");
container.append("<button>CLEAR SCREEN</button>");

for (i = 1; i <= x; i++) {
container.append("<div class='row " + i + "'></div>");

for (j = 1; j <= x; j++) {
$(".row." + i).append("<div class='cell " + j + "'></div>");
}
}

我想用变量更改$(&#34; .row。&#34;),以便我不会在每个循环中调用它,并且似乎无法将其转换为工作正常。我试过了 - (行+&#34;。&#34; + i).append ...但是没有用。

2 个答案:

答案 0 :(得分:2)

在进行循环之前选择所有行,只过滤循环中的结果。

var row = $(".row");

...

for (j = 1; j <= x; j++) {
    row.filter("." + i).append("<div class='cell " + j + "'></div>");
}

编辑:好的,我错过了在第一个循环中创建的行,因此在此之前它们无法用于选择,并且选择不会更新。因此,我建议您在创建时保存对行的引用,而不是选择行,而是使用:

var container = $("#container");
container.append("<button>CLEAR SCREEN</button>");

for (i = 1; i <= x; i++) {
    $row = $("<div class='row " + i + "'></div>");

    for (j = 1; j <= x; j++) {
        $row.append("<div class='cell " + j + "'></div>");
    }
    container.append($row);
}

答案 1 :(得分:0)

这个怎么样?我相信你想要那段时间吗?

for (j = 1; j <= x; j++) {
    row.add("." + i).append("<div class='cell " + j + "'></div>");
}