无法使用javascript </div>动态地将新文本框添加到<div>标记

时间:2012-12-10 21:09:17

标签: javascript jquery html5 jquery-mobile

我已经在这一天超过半天,我无法弄清楚我错过了什么。我尝试了很多不同的迭代和我能找到的其他解决方案。这应该是一个明智的选择。我正在使用JQueryMobile 1.2及其依赖项这里是javascript(注释var counter = 2; 在代码上方声明:

    $("#btn_addIngredient").click(function () {      
        if (counter > 10) {
            alert("Please limit to 10 ingredients");
            return false;
        }   

        var newIngredientTextBox = $(document.createElement('div')).attr("id", 'div_ingredient' + counter);         

        newIngredientTextBox.after().html('<input type="text" name="ingredient' + counter + 
              '" id="ingredient' + counter + '" value="#' + counter + '" >');

        newIngredientTextBox.appendTo("#allIngredientsDiv"); 
        counter++;

    }); //~ $("#btn_addIngredient")

和html:

     <div id="IngredientsTextGroup" data-role="fieldcontain">
            <fieldset id="IngredientsFieldset" data-role="controlgroup" data-mini="true">
            <div id="allIngredientsDiv">
                Ingredients
                <div id="div_ingredient1">
                    <input id="ingredient1" value="#1" type="text">
                </div>

                <!-- *** Need to add <div_ingredient2, 3 ...>  -->

            </div>
            <a id="btn_addIngredient" href="#" data-role="button" data-inline="true" data-icon="plus"
                             data-iconpos="left">
                Add Ingredient
            </a>
    <div>

2 个答案:

答案 0 :(得分:2)

您使用的是.after()错误..如果您希望元素位于所选元素之后,请执行此操作

newIngredientTextBox.after('<input type="text" name="ingredient' + counter + 
          '" id="ingredient' + counter + '" value="#' + counter + '" />');

如果你想让它在div元素中,那么你可以使用.append()

newIngredientTextBox.append('<input type="text" name="ingredient' + counter + 
          '" id="ingredient' + counter + '" value="#' + counter + '" />');

此外,您需要在将元素添加到dom之后附加元素..而不是在

之前
newIngredientTextBox.appendTo("#allIngredientsDiv").after('<input type="text" name="ingredient' + counter + 
          '" id="ingredient' + counter + '" value="#' + counter + '" />');

答案 1 :(得分:0)

尝试

var counter = 2;
var newIngredientTextBox = $(document.createElement('div')).attr("id", 'div_ingredient' + counter);         
console.info(newIngredientTextBox);
newIngredientTextBox.after('<input type="text" name="ingredient' + counter +  '" id="ingredient' + counter + '" value="#' + counter + '" >');

之后添加html将无法正常工作