Как добавить атрибуты ко всем блокам?
Всем привет, подскажите, я хочу добавить ко всем блокам, которые у меня в переменной 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> |
Ruslan_xDD,
твой вариант проще сразу this это уже элемент |
Часовой пояс GMT +3, время: 17:54. |