2017-05-15 222 views
0

我正在做一些代码,我需要将标签附加到div然后将其附加到正文。JQuery将元素附加到div

我运行程序和我看到的div被创建,但标签不能附着到div:

这里是我的代码

var divName = "div-isoparameters"; 

function createComponents() { 
    createDiv(); 
    createLabels(divName); 
} 

function createDiv() { 
    var $div = $('<div />').appendTo('body'); 
    $div.attr('id', divName); 
    $div.attr('class', divName); 
    $div.css("display","block"); 
} 

function createLabels(divName) { 
    for (var i = 0; i < 10; i++) { 
     var $label = $("<label>").text("label something: "); 
     //Create the input element 
     var $input = $('<input type="text">').attr({ id: 'something', name: 'something' }); 

     //Insert the input into the label 
     $input.appendTo($label); 

     $(divName.id).append($label); 
    } 
} 

我不知道我做错了什么由于我追加DIV的身体,然后我的所有标签附加到div

回答

1

您的问题是在代码的最后一行:

 $(divName.id).append($label); 

不是你如何选择由ID项。如果您知道商品ID,请在jQuery中选择一个#字符作为ID。

例如,如果DIV具有labelHolder一个id:

$('#labelHolder').append($label); 

所以,你有两个选择:

可手动前面加上十字线:

$('#' + divName).append($label); 

或者,您也可以通过调用document.getElementById(...)来检索元素。这是我的首选,因为它更清楚你在做什么。

$(document.getElementById(divName)).append($label); 
+0

当人们补充/猜测语法时,总是让我震惊,然后问为什么它不起作用。 –

+1

@安德鲁谢泼德谢谢你的时间和你的解释。你的回答确实对我有帮助。这是我第一次使用jquery或任何其他js框架,你的解释解决了这个错误和我的其他人 – Joseph

0
$("#"+divName).append($label); 

你忘了在格名称添加#。我还删除了.id,因为您已经通过了div-isoparameters的ID名称。基本上你会得到DOM $("#div-isoparameters")