我需要更改每个元素的值日期,但是在循环结束时,所有元素都被赋予相同的属性= /
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
答案 0 :(得分:2)
基于你小提琴中的jQuery,听起来像你想要的那样:
$(".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);
});