2011-12-02 44 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

相关问题