2011-12-02 45 views
0

我有這樣的網格。 如何更改每個元素的索引,即 擁有圖像[0],圖像[1],圖像[2]?如何更改網格中的每個元素?

<div class="grid"> 

<div class="gridItem"> 
    <div><img src="image1.jpg" class="gridThumb" /></div> 
    <input type="hidden" name="images[0]" value="image1.jpg" /> 
</div> 

<div class="gridItem"> 
    <div><img src="image2.jpg" class="gridThumb" /></div> 
    <input type="hidden" name="images[2]" value="image2.jpg" /> 
</div> 

<div class="gridItem"> 
    <div><img src="image3.jpg" class="gridThumb" /></div> 
    <input type="hidden" name="images[3]" value="image3.jpg" /> 
</div> 

</div> 

這是MVC3網站中創建視圖的一部分。 用戶創建模型並上傳文件,然後他可以刪除其中的一些文件,然後單擊創建。 我需要將圖像名稱添加到模型並將該列表保存在數據庫中。

[HttpPost, ActionName("Create")] 
    public ActionResult Create(MyModel m, string[] images) 

但是,如果用戶刪除了一些我需要重新索引圖像項[I]的元素,因爲MVC結合不能傳遞數組缺席元素。

+0

它看起來像你已經做索引的元素。我確定你的問題很清楚。 –

+0

老實說,不要這樣做。這是一個昂貴的事情,不會擴大規模。分離並重新排序節點或重建並替換它。觸摸每個輸入似乎是浪費「邏輯」。 – AutoSponge

+0

我添加了詳細信息...您寫下了「不要這樣做」..我怎麼能解決這個問題呢? – Oleg

回答

3

你可以嘗試:

$(function(){ 
    var gridCnt = 0 
    $('.grid').find('.gridItem').each(function(){ 
    $(this).attr('name','images[' + gridCnt + ']') 
    gridCnt++ 
    }) 
}) 
0
var count=0,$els = $('.gridItem input'); 

$.each($els,function(){ 
    $(this).attr('name',"images[" + count + "]"); 
    count++; 
}); 
0
$('.grid .gridItem input').each(function(index, elem){ 
    elem.attr("name","images["+index+"]"); 
}); 
+0

@Pastor Bones:當jQuery的每個方法本身提供索引選項時,爲什麼我們需要另一個變量gridCnt來存儲索引 – prashu132

相關問題