Jquery console.log和名称附加不起作用

时间:2014-09-22 07:20:01

标签: javascript jquery

我正在使用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

无论我是使用插件还是现在,都不会以某种方式附加名称。请帮忙,谢谢。

1 个答案:

答案 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"));   
});