Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.10.2015, 19:27
Интересующийся
Отправить личное сообщение для salofun Посмотреть профиль Найти все сообщения от salofun
 
Регистрация: 04.04.2014
Сообщений: 21

Как добавить атрибуты ко всем блокам?
Всем привет, подскажите, я хочу добавить ко всем блокам, которые у меня в переменной 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, 11.10.2015 в 19:42.
Ответить с цитированием
  #2 (permalink)  
Старый 11.10.2015, 19:37
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

salofun,
откуда взялось
Сообщение от salofun
bb
?
Ответить с цитированием
  #3 (permalink)  
Старый 11.10.2015, 19:42
Интересующийся
Отправить личное сообщение для salofun Посмотреть профиль Найти все сообщения от salofun
 
Регистрация: 04.04.2014
Сообщений: 21

Извиняюсь, от руки переписывал, не копипастом, сейчас поправил
Ответить с цитированием
  #4 (permalink)  
Старый 11.10.2015, 19:54
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

var blocks = ['#block1', '#block2'],
$(blocks.toString()).each(function(index) {
    this.dataset.name = 'block' + index;
});
Ответить с цитированием
  #5 (permalink)  
Старый 11.10.2015, 20:06
Интересующийся
Отправить личное сообщение для salofun Посмотреть профиль Найти все сообщения от salofun
 
Регистрация: 04.04.2014
Сообщений: 21

Сообщение от Ruslan_xDD Посмотреть сообщение
var blocks = ['#block1', '#block2'],
$(blocks.toString()).each(function(index) {
    this.dataset.name = 'block' + index;
});
Запятую на двоеточие в конце переменной заменил и ок.

Последний раз редактировалось salofun, 11.10.2015 в 20:08.
Ответить с цитированием
  #6 (permalink)  
Старый 11.10.2015, 20:13
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от Ruslan_xDD
$(blocks.toString())
это лишнее

Последний раз редактировалось рони, 11.10.2015 в 21:46.
Ответить с цитированием
  #7 (permalink)  
Старый 11.10.2015, 20:18
Интересующийся
Отправить личное сообщение для salofun Посмотреть профиль Найти все сообщения от salofun
 
Регистрация: 04.04.2014
Сообщений: 21

Сообщение от рони Посмотреть сообщение
это лишнее
Если убрать не работает, но если вывести bb = blocks.join(); тогда работает (если указать $(bb)... )

Какой раздел учебника мне почитать?

Вот добавил к index + 1, так правильно, или нужно иначе?

$(bb).each(function(index) {
    var i = (index + 1);
    this.dataset.name = 'block' + i;
});

Последний раз редактировалось salofun, 11.10.2015 в 20:23.
Ответить с цитированием
  #8 (permalink)  
Старый 11.10.2015, 20:24
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

рони, ну если jQuery воспринимает массив как строку, то - да. Я просто не знаю, как она там устроена, редко в ней работаю.

salofun, в принципе, правильно, но можно сразу так:

this.dataset.name = 'block' + (index + 1);

Последний раз редактировалось ruslan_mart, 11.10.2015 в 20:27.
Ответить с цитированием
  #9 (permalink)  
Старый 11.10.2015, 20:39
Интересующийся
Отправить личное сообщение для salofun Посмотреть профиль Найти все сообщения от salofun
 
Регистрация: 04.04.2014
Сообщений: 21

Спасибо, а можно ещё вопрос, я хочу взять это в функцию и повторить с другими значениями, как мне поступить?

Как дать значения переменным i и y?

function iElement(i, y) {
$(i).each(function(index) {
    this.dataset.name = y + (index + 1);
});
};


Поспешил, людей насмешил, всё же правильно, теперь я вызову функцию и задам значения.

iElement(blockers, 'block');
iElement(buttoners, 'button');


Всем спасибо, несколько часов шевелил мозги, но с вашей помощью всё получилось в считанные минуты.
Ответить с цитированием
  #10 (permalink)  
Старый 11.10.2015, 21:27
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от salofun
Если убрать не работает
если правильно написать то работает

<!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>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как добавить данные в глобальный массив из функции Jigan2 jQuery 2 14.03.2015 18:06
Как добавить методы объекту после конструирования. DragorWW Общие вопросы Javascript 23 21.01.2013 20:39
Как добавить кнопки к каждому полю формы SaltoMortale ExtJS 2 07.08.2012 12:22
Как добавить метод ко всем элементам? zubr80 Events/DOM/Window 3 06.04.2009 05:46
Как добавить свой блог в раздел feeds этого сайта IzumeRoot Ваши сайты и скрипты 13 30.10.2008 21:11