每个$ .each附加两个输入。?

时间:2011-09-03 17:57:01

标签: javascript jquery append

我想在每个key.name_units附加两个输入。这是我的代码,但没有成功:

 $.each(ok, function (bu, key) {
     $("<p/>").append(key.name_units, $("<input/>", {
         type: "text",
         Name: "a[]"
     }), $("<input/>", {
         type: "text",
         name: "a[]"
     })).appendTo(".list");
 });

怎么样??

EXAMPLE

2 个答案:

答案 0 :(得分:1)

您已经定义了要附加数据的错误选择器。

您已定义<p/>,但如果要附加到段落(<p>some text</p>),则必须仅将p定义为JQuery选择器:$("p").append()

example中的HTML中也没有<p>个标记。

我也认为,你传递错误的论点。

描述你想要做什么。

答案 1 :(得分:0)

要使用.each()迭代数组或对象,您需要为函数输入使用不同的签名。因此使用function(bu, key)不正确*。

function(index, value) <<< Array
function(key, value) <<< Object

以下是使用标记作为示例的两个示例。注意我向UL添加了一点宽度,因此我可以显示索引和值。

var ok = [1,2,3];

$('.list li').remove();

$.each(ok, function(index, value){
    $('<li>"key.name_units ('+index+', '+value+')" '+
      '<input type="text" name="out[]">'+
      '<input type="text" name="out[]">'+
      '</li>').appendTo('.list');
});

ok = {
    four: '4',
    five: '5',
    six: '6'
};

$.each(ok, function(key, value){
    $('<li>"key.name_units ('+key+', '+value+')" '+
      '<input type="text" name="out[]">'+
      '<input type="text" name="out[]">'+
      '</li>').appendTo('.list');
});

将输出:

<li>"key.name_units (0, 1)" <input name="out[]" type="text"><input name="out[]" type="text"></li>
<li>"key.name_units (1, 2)" <input name="out[]" type="text"><input name="out[]" type="text"></li>
<li>"key.name_units (2, 3)" <input name="out[]" type="text"><input name="out[]" type="text"></li>
<li>"key.name_units (four, 4)" <input name="out[]" type="text"><input name="out[]" type="text"></li>
<li>"key.name_units (five, 5)" <input name="out[]" type="text"><input name="out[]" type="text"></li>
<li>"key.name_units (six, 6)" <input name="out[]" type="text"><input name="out[]" type="text"></li>

http://jsfiddle.net/userdude/SXXee/1/

*至少,我认为不是。