2012-03-01 58 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" 
}