选择具有相同类的元素后更改日期属性值

时间:2015-12-17 00:59:45

标签: javascript jquery

我需要更改每个元素的值日期,但是在循环结束时,所有元素都被赋予相同的属性= /

fiddle

var el = $(".div-parent").find(".div-children");
 $(el).each(function( index ) {
    el.attr('data-attr',parseInt(el.attr('data-attr'))+1);
 }); 
 $(el).each(function( index ) {
     $(".div-parent").append('<br/>elemment '+el.attr('data-attr'));
 });

输出:

elemment 1
elemment 2
elemment 3

elemment 4
elemment 4
elemment 4

期望的输出:

elemment 1
elemment 2
elemment 3

elemment 2
elemment 3
elemment 4

2 个答案:

答案 0 :(得分:2)

基于你小提琴中的jQuery,听起来像你想要的那样:

Updated Example

$(".div-parent .div-children").each(function(index) {
  $(this).attr('data-attr', parseInt($(this).attr('data-attr'), 10) + 1);
  $(".div-parent").append('<br/>elemment ' + $(this).attr('data-attr'));
});

问题是你每次都在获取jQuery对象中第一个元素的data-attr属性。换句话说,1增加了3倍(因为你将元素循环了3次),结果是4.通过访问this来访问每次迭代的当前元素的属性。

作为注释,您应该在radix函数中指定parseInt值。在这种情况下,10

答案 1 :(得分:1)

使用clone()。我更喜欢这种方法,因为使用它可以获得整个对象,然后您可以根据需要更改其属性。

var el = $(".div-parent").find(".div-children");
$(".div-parent").append("<br/>");
 $(el).each(function( index ) {
  var el_new = $(this).clone();  
    el_new.attr('data-attr',parseInt($(this).attr('data-attr')) + 1);
  el_new.text("elemment " + (parseInt($(this).attr('data-attr')) + 1));
  $(".div-parent").append(el_new);
 }); 

示例:https://jsfiddle.net/DinoMyte/koez1mt1/3/