所以我有一个代码的安静,这里是JSFiddle链接:http://jsfiddle.net/alexchizhov/T5858/25/
下面的代码是将counter重置为1并为剩下的每个元素添加新索引,但由于某种原因它不起作用。
// Working with counter
if ($(this).prop('checked')) {
$('<div class="rbPickedCategory" data-pickedcat-name="' + $(this).val() + '"><div class="rbPcCat">' + $(this).attr('data-category-name') + '</div><div class="rbPcSubCat">' + $(this).val() + '</div></div><input type="hidden" name="rbwwsubcategoryhidden[' + countIndexCat + ']" value="' + $(this).val() + '" data-pickedcat-hidden="' + $(this).val() + '"><input type="hidden" name="rbwwcategoryhidden[' + countIndexCat + ']" value="' + $(this).attr('data-category-name') + '" data-catname-hidden="' + $(this).val() + '">').appendTo('div.rbWwCatPicked');
countShownCats++;
countIndexCat++;
} else {
$('div.rbPickedCategory[data-pickedcat-name="' + $(this).val() + '"]').remove();
$('input[data-pickedcat-hidden="' + $(this).val() + '"]').remove();
$('input[data-catname-hidden="' + $(this).val() + '"]').remove();
countShownCats--;
countIndexCat--;
// Reset the counter
var counter = 1;
$('input[data-pickedcat-hidden="' + $(this).val() + '"]').each(function () {
$(this).attr('name', 'rbwwsubcategoryhidden[' + counter + ']');
counter++;
});
var counter = 1;
$('input[data-catname-hidden="' + $(this).val() + '"]').each(function () {
$(this).attr('name', 'rbwwcategoryhidden[' + counter + ']');
counter++;
});
}
所以我需要的是当我删除一个元素时,代码会找到所有带有数据属性的元素: data-catname-hidden
和 data-pickedcat-hidden
并添加一个名为属性的新索引,如: rbwwsubcategoryhidden[1]
, rbwwsubcategoryhidden[2]
等等。
那么我做错了什么?谢谢!
修改
没关系,我发现了一个错误。我一直在寻找具体的元素,但我需要找到所有元素。所以我刚刚删除了 $(this).val()
,它确实有效:)就像这样:
var counter = 1;
$('input[data-pickedcat-hidden]').each(function () {
$(this).attr('name', 'rbwwsubcategoryhidden[' + counter + ']');
counter++;
});
var counter = 1;
$('input[data-catname-hidden]').each(function () {
$(this).attr('name', 'rbwwcategoryhidden[' + counter + ']');
counter++;
});