jQuery,使用for循环来操作元素? (添加/删除类等)

时间:2015-04-26 19:06:45

标签: javascript jquery function class for-loop

function roomGen(minimum, maximum, interv) {
    for (var i = minimum; i < maximum; i += interv) {   
        room = "#room" + i;
        $(room).addClass('currentRoom');
        console.log(room);
    }
}
roomGen(1,20,1);
嘿所有人。我试图通过特定的ID同时动态地将类添加到多个div。我有来自数字1-100的id为#room..的div。

我期待这个功能相当于输入:

$('#room1').addClass('currentRoom');
$('#room2').addClass('currentRoom');
etc...

然而它没有给我我所希望的东西。 console.log方法返回了我期望的内容(#room1#room2),我没有收到有关语法的JS / jQuery错误或elem未被识别。基本上,当我触发roomGen()函数时...实际上没有任何反应。

我尝试过搭配引号(room = "'"+"#room"+i+"'"),我尝试过使用i.toString(),我也尝试将房间添加到数组并访问它们。这些都不适合我。

知道这是否可行?看起来应该是这样。

2 个答案:

答案 0 :(得分:2)

您的代码正常运行,请务必在$(document).ready()内添加脚本,或在DOM元素定位后添加脚本。

$(document).ready(function() {
	function roomGen(minimum, maximum, interv) {
	  for (var i = minimum; i < maximum; i += interv) {
		room = "#room" + i;
		$(room).addClass('currentRoom');
		console.log(room);
	  }
	}

	// generate stub data for test
	for (var i = 0; i < 100; i += 1) { 
	  $("#rooms").append('<div id="room'+i+'">room'+i+'</div>');
	}

	roomGen(1, 20, 2);
});
.currentRoom{
  color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="rooms"></div>

答案 1 :(得分:0)

jQuery在 元素集上运行。 Selectfilter正确的元素,你根本不需要循环。

$("*[id^=room]").filter(function () {
    return 0 + this.id.replace("room", "") <= 100;
}).addClass('currentRoom');