2014-09-22 42 views
0

我正在使用plugin为我的<select>元素加载了jquery图片。问题是,这些名称并没有转移到新的代码中,因此无法提交围绕它的表单。新代码如下所示:jquery foreach set name属性值

<div id="itemselect1" name="item1" class="dd-container"> 
    <div class="dd-select"> 
     <input class="dd-selected-value" value="Apple" type="hidden"> 
    </div> 
</div> 

<div id="itemselect2" name="item2" class="dd-container"> 
    <div class="dd-select"> 
     <input class="dd-selected-value" value="Orange" type="hidden"> 
    </div> 
</div> // the list continues 

所以,我想这种方法的名称在转移:虽然它仍然没有工作

var list = { 
    "itemselect1": "item1", 
    "itemselect2": "item2", 
    "itemselect3": "item3", 
    "itemselect4": "item4", 
    "itemselect5": "item5", 
    "itemselect6": "item6" 
}; 
$.each(list, function(key, value) { 
    $("#"+ key).children().children("input.dd-selected-value").attr("name", value); 
}); 

<input>元素没有名字。有想法该怎么解决这个吗?谢谢!

编辑:我已经添加了一些改变,以帮助诊断问题

$.each(list, function(key, value) { 
    $("#"+ key).children().children("input.dd-selected-value").attr("name", value); 
    console.log(key); 
    console.log(value); 
    console.log($("div#"+ key).attr("name")); 
}); 

继承人什么控制台说:

itemselect1 (index):30 
item1 (index):31 
undefined (index):32 
itemselect2 (index):30 
item2 (index):31 
undefined (index):32 

我已经在插件的最后尝试这样做jquery文件以及文件中的<script>标记。这显然没有找到名称。我会继续挖掘...

+0

它看起来好像没什么问题 - http://jsfiddle.net/arunpjohny/wa01cmsn/2/ - 检查输入的名称属性通过检查隐藏的元素 – 2014-09-22 03:20:24

+0

真的改变了你的输入应该添加@ArunPJohny所述的名称属性。你也可以用'$(“#”+ key).children()。children(“input.dd-selected-value”)。attr(“name”,value)替换这个' ' #“+ key +”input.dd-selected-value“)。attr(”name“,value);'因为你已经拥有了两个标识符。无需调用'childer()。children()' – andrex 2014-09-22 03:29:03

+0

@ArunPJohny它似乎在那里工作,我猜它与插件中的某些东西有冲突。 – Kragalon 2014-09-22 06:00:46

回答

0

尝试for in

for (var key in list){ 
    $("#"+ key).children().children("input.dd-selected-value").attr("name", list[key]); 
} 
+0

OP的代码没有错......它应该可以正常工作 – 2014-09-22 03:22:49

+0

OP表示**输入**元素没有名称 – andrex 2014-09-22 03:26:58

+0

雅,我想这是干涉插件的某种方式。 – Kragalon 2014-09-22 05:55:24