2012-03-01 89 views
0

赋值我有以下代码:jQuery的发现儿童和按订单

<div class="A1"> 
    <div class="child">A1-1</div> 
    <div class="child">A1-2</div> 
    <div class="child">A1-3</div> 
    <div class="child">A1-4</div> 
    <div class="A2"> 
     <div class="child">A2-1</div> 
     <div class="child">A2-2</div> 

     <div class="A3"> 
      <div class="child">A3-1</div> 
      <div class="child">A3-2</div> 
     </div> 
    </div> 
</div> 

我想知道如何将一个值分配给基于订单的class .A1例如每个孩子。所以如果A1-1是第一个喜欢上的代码将被分配:1 如果我重新排序:

<div class="child">A1-3</div> 
<div class="child">A1-2</div> 
<div class="child">A1-1</div> 
<div class="child">A1-4</div> 

那么现在A1-1将有3 任何想法的值?

+0

你所说的“价值”呢? div元素没有值属性。你只是想包括有“小孩”类的“A1”的孩子,还是应该包含“A2”? (“A2”的孩子怎么样?) – nnnnnn 2012-03-01 07:39:25

+0

一个数字...我试图将值保存到数据库,这样我可以按优先级显示结果。降序 – cppit 2012-03-01 07:43:30

+0

这是令人困惑的,如果您将A1-1更改为A1-3,那么与初始结构有什么不同?或者你是在谈论元素索引 - 现在是div中的第三个元素? – 2012-03-01 07:45:53

回答

4
$('.A1').children().each(function (index,element) { 
    $(element).html('A1-' + (index + 1)); 
}); 
+0

它将第一个元素更改为A1-0,其他元素消失 – cppit 2012-03-01 07:51:53

+0

其他元素是您的第一个元素的子元素吗? – 2012-03-01 07:55:49

+0

这是我的错误,在那之下还有另一个班。谢谢你完美的工作 – cppit 2012-03-01 07:59:42

1

正如我在评论中提到,div元素没有value属性,所以下面创建一个data-value属性将被设置为1的第一个孩子,2为第二等:

$(".A1").children().each(function(index) { 
    $(this).attr("data-value", index + 1); 
}); 

即使您在DOM中移动它们,该属性也会保留在每个元素中。

如果您想将值提交给您的数据库,那么您可能想要将索引“1”与它的div“A1-1”(或最后一个示例中的“A1-3”)的内容相关联。如果是这样,你可以做这样的事情:

var values = {}; 
$(".A1").children().each(function(index) { 
    values[index + 1] = $(this).html(); 
}); 
$.post("yourURLtoSubmitDataTo", values); 

values对象最终会是这样的:

{ 
    "1" : "A1-3", 
    "2" : "A1-2", 
    "3" : "A1-1", 
    "4" : "A1-4" 
}