我正在使用plugin来为我的<select>
元素提供由jquery加载的图像。问题是,名称没有转移到新代码的<input>
元素,因此无法提交围绕它的表单。
该插件会转换此代码:
<select id="itemselect1" name="item1">
<option>1</option>
<option selected>2</option>
<option>3</option>
</select>
<select id="itemselect2" name="item3">
<option>A</option>
<option>B</option>
<option selected>C</option>
</select>
进入:(我简化了一下)
<div id="itemselect1" name="item1" class="dd-container">
<div class="dd-select">
<input class="dd-selected-value" value="2" type="hidden">
</div>
</div>
<div id="itemselect2" name="item2" class="dd-container">
<div class="dd-select">
<input class="dd-selected-value" value="C" 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 );
console.log(key);
console.log(value);
console.log($("div#"+ key).attr("name")); // To diagnose why it isnt working
});
控制台只读:
itemselect1 (index):32
item1 (index):33
undefined (index):34
itemselect2 (index):32
item2 (index):33
undefined (index):34
无论我是使用插件还是现在,都不会以某种方式附加名称。请帮忙,谢谢。
答案 0 :(得分:1)
在jquery中使用find
()。您为输入分配了name属性,但是您打印并检查父div名称,因此它给出了undefined。
$.each( list, function( key, value ) {
$("#"+ key).find(".dd-select input.dd-selected-value").attr("name", value);
console.log($("#"+ key).find("input.dd-selected-value").attr("name"));
});