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
Спасибо
|
|
05.10.2017, 19:38
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
$(function() {
$('[data-name]').each(function() {
var attr = this.getAttribute('data-name') + ':30';
this.setAttribute('data-name', attr)
});
});
|
|
05.10.2017, 19:43
|
Профессор
|
|
Регистрация: 17.11.2014
Сообщений: 403
|
|
Спасибо. Правда, я наверно не очень правильно выразил мысль. Мне нужно не изменить data-name, а просто, получить весь список и передать в переменную. В итоге моя переменная на выходе должна содержать category:10,size:20,color:30,brend:40 Чтобы потом обработать через ajax, или есть более элегантное решение?
|
|
05.10.2017, 19:45
|
Профессор
|
|
Регистрация: 17.06.2016
Сообщений: 509
|
|
Янковиц,
Некоторые спешат, невнимательно читают условие... Вот верный вариант.
$('[data-name]').attr('data-name', function(i, v) {
return v+=':'+(++i*10);
});
|
|
05.10.2017, 19:49
|
Профессор
|
|
Регистрация: 17.11.2014
Сообщений: 403
|
|
Не совсем понял как загнать в переменную... Простите, мозк не соображает, а работу делать надо
|
|
05.10.2017, 19:49
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Янковиц
|
В итоге моя переменная на выходе должна содержать category:10,size:20,color:30,brend:40
|
Все понятно вы пишите, только не поясняете зависимости 10, 20, ... со значением атрибутов, что догадываться изволите?
|
|
05.10.2017, 19:50
|
Профессор
|
|
Регистрация: 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(',');
|
|
05.10.2017, 19:53
|
Профессор
|
|
Регистрация: 17.11.2014
Сообщений: 403
|
|
Сообщение от laimas
|
Все понятно вы пишите, только не поясняете зависимости 10, 20, ... со значением атрибутов, что догадываться изволите?
|
Простите.. Если первый div, то data-name присвоить 10, если второй, то 20 и так далее. Заведомо не известно, див с каким data-name будет первым, а какой последующий не известно...
|
|
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(',');
Не совсем понимаю, где здесь переменная
|
|
05.10.2017, 19:55
|
Профессор
|
|
Регистрация: 17.06.2016
Сообщений: 509
|
|
Янковиц,
снизу - alert(str);
|
|
|
|