Как добавить атрибуты ко всем блокам?
Всем привет, подскажите, я хочу добавить ко всем блокам, которые у меня в переменной blocks атрибут data-name="block#", где # там число от 1 и соответствует кол-ву блоков. Я использую библиотеку jquery.
var blocks = ['#block1', '#block2'],
i = 1;
bb = blocks.join();
for ( i = 1; i < bb.lenght; i++ ) {
if (true) { $(bb).attr('data-name', 'block' + i ); break;}
};
Код никаких ошибок не выдаёт, но и атрибут не добавляет, что не так? p.s насколько я понимаю проблема в цикле, потому-что без него атрибут добавляется (data-name="block1") |
salofun,
откуда взялось Цитата:
|
Извиняюсь, от руки переписывал, не копипастом, сейчас поправил
|
var blocks = ['#block1', '#block2'],
$(blocks.toString()).each(function(index) {
this.dataset.name = 'block' + index;
});
|
Цитата:
|
Цитата:
|
Цитата:
Какой раздел учебника мне почитать? Вот добавил к index + 1, так правильно, или нужно иначе?
$(bb).each(function(index) {
var i = (index + 1);
this.dataset.name = 'block' + i;
});
|
рони, ну если jQuery воспринимает массив как строку, то - да. Я просто не знаю, как она там устроена, редко в ней работаю.
salofun, в принципе, правильно, но можно сразу так: this.dataset.name = 'block' + (index + 1); |
Спасибо, а можно ещё вопрос, я хочу взять это в функцию и повторить с другими значениями, как мне поступить?
Как дать значения переменным i и y?
function iElement(i, y) {
$(i).each(function(index) {
this.dataset.name = y + (index + 1);
});
};
Поспешил, людей насмешил, всё же правильно, теперь я вызову функцию и задам значения. iElement(blockers, 'block'); iElement(buttoners, 'button'); Всем спасибо, несколько часов шевелил мозги, но с вашей помощью всё получилось в считанные минуты. |
Цитата:
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
[data-name]{background:#FFD700;width:100px;cursor:pointer;margin:5px auto;}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js">
</script>
<script>
$(function() {
var blocks = ["#block1", "#block2"];
$(blocks).each(function(index, id) {
$(id).click(function() {
alert(this.dataset.name)
})[0].dataset.name = "block" + ++index
})
});
</script>
</head>
<body>
<div id="block1">
click me 1
</div>
<div id="block2">
click me 2
</div>
</body>
</html>
|
| Часовой пояс GMT +3, время: 21:04. |