Javascript.RU

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

Получить элементы внутри блока по порядку и присвоить свое значение
Добрый день. Есть следующий кусок html:
<div class="task-list">
	<div id="task-1" class="task" data-name="category">
		<p>Категории</p>
		<a href="#" class="icon-pencil">✎</a>
	</div>
	<div id="task-2" class="task" data-name="size">
		<p>Размер</p>
		<a href="#" class="icon-pencil">✎</a>
	</div>
	<div id="task-3" class="task" data-name="color">
		<p>Цвет</p>
		<a href="#" class="icon-pencil">✎</a>
	</div>
	<div id="task-4" class="task" data-name="brend">
		<p>Производитель</p>
		<a href="#" class="icon-pencil">✎</a>
	</div>
</div>


Как последовательно получить data-name всех дивов внутри task-list и присвоить им значения? Например, должно получиться:
category:10,size:20,color:30,brend:40
Спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 05.10.2017, 19:38
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

$(function() {
    $('[data-name]').each(function() {
        var attr = this.getAttribute('data-name') + ':30';
        this.setAttribute('data-name', attr)
    });
});
Ответить с цитированием
  #3 (permalink)  
Старый 05.10.2017, 19:43
Профессор
Отправить личное сообщение для Янковиц Посмотреть профиль Найти все сообщения от Янковиц
 
Регистрация: 17.11.2014
Сообщений: 403

Спасибо. Правда, я наверно не очень правильно выразил мысль. Мне нужно не изменить data-name, а просто, получить весь список и передать в переменную. В итоге моя переменная на выходе должна содержать category:10,size:20,color:30,brend:40 Чтобы потом обработать через ajax, или есть более элегантное решение?
Ответить с цитированием
  #4 (permalink)  
Старый 05.10.2017, 19:45
Профессор
Отправить личное сообщение для Rasy Посмотреть профиль Найти все сообщения от Rasy
 
Регистрация: 17.06.2016
Сообщений: 509

Янковиц,
Некоторые спешат, невнимательно читают условие... Вот верный вариант.

$('[data-name]').attr('data-name', function(i, v) {
   return v+=':'+(++i*10);
});
Ответить с цитированием
  #5 (permalink)  
Старый 05.10.2017, 19:49
Профессор
Отправить личное сообщение для Янковиц Посмотреть профиль Найти все сообщения от Янковиц
 
Регистрация: 17.11.2014
Сообщений: 403

Не совсем понял как загнать в переменную... Простите, мозк не соображает, а работу делать надо
Ответить с цитированием
  #6 (permalink)  
Старый 05.10.2017, 19:49
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Янковиц
В итоге моя переменная на выходе должна содержать category:10,size:20,color:30,brend:40
Все понятно вы пишите, только не поясняете зависимости 10, 20, ... со значением атрибутов, что догадываться изволите?
Ответить с цитированием
  #7 (permalink)  
Старый 05.10.2017, 19:50
Профессор
Отправить личное сообщение для Rasy Посмотреть профиль Найти все сообщения от Rasy
 
Регистрация: 17.06.2016
Сообщений: 509

Сообщение от Янковиц
В итоге моя переменная на выходе должна содержать category:10,size:20,color:30,brend:40 Чтобы потом обработать через ajax, или есть более элегантное решение?
Тогда, да
var str = $('[data-name]').attr('data-name', function(i, v) {
   return v+=':'+(++i*10);
}).map(function(indx, el) {
  return $(el).data('name');
}).get().join(',');
Ответить с цитированием
  #8 (permalink)  
Старый 05.10.2017, 19:53
Профессор
Отправить личное сообщение для Янковиц Посмотреть профиль Найти все сообщения от Янковиц
 
Регистрация: 17.11.2014
Сообщений: 403

Сообщение от laimas Посмотреть сообщение
Все понятно вы пишите, только не поясняете зависимости 10, 20, ... со значением атрибутов, что догадываться изволите?
Простите.. Если первый div, то data-name присвоить 10, если второй, то 20 и так далее. Заведомо не известно, див с каким data-name будет первым, а какой последующий не известно...
Ответить с цитированием
  #9 (permalink)  
Старый 05.10.2017, 19:54
Профессор
Отправить личное сообщение для Янковиц Посмотреть профиль Найти все сообщения от Янковиц
 
Регистрация: 17.11.2014
Сообщений: 403

var str = $('[data-name]').attr('data-name', function(i, v) {
   return v+=':'+(++i*10);
}).map(function(indx, el) {
  return $(el).data('name');
}).get().join(',');


Не совсем понимаю, где здесь переменная
Ответить с цитированием
  #10 (permalink)  
Старый 05.10.2017, 19:55
Профессор
Отправить личное сообщение для Rasy Посмотреть профиль Найти все сообщения от Rasy
 
Регистрация: 17.06.2016
Сообщений: 509

Янковиц,
снизу - alert(str);
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
получить значение по клику gudzik Общие вопросы Javascript 6 11.12.2012 18:22
Как получить значение переменной из callback функции? Хиросим AJAX и COMET 5 24.04.2012 09:32
Не могу получить значение атрибута DenQ jQuery 9 06.02.2011 14:33
Как получить значение аттрибута вложенного тэга по id losk Events/DOM/Window 4 21.11.2009 10:08
Можно ли получить имя экземпляра объекта внутри самого объекта? Ichigeki Общие вопросы Javascript 9 14.11.2008 19:00