jQuery:删除元素时重置计数器

时间:2014-08-14 06:42:23

标签: jquery find each counter

所以我有一个代码的安静,这里是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++;
             });

0 个答案:

没有答案