无法获取动态创建元素的id

时间:2014-06-08 20:14:59

标签: javascript jquery html

我制作的网页将通过ajax动态生成大量输入。我想检索更改的任何输入的id(以及最新的值)。以下是我网站的一个非常简单的示例。现在我使用委托附加一个事件处理程序来检索输入的id和new值,但是我无法得到我想要的值。我的实施不正确吗?我是jquery的新手,所以任何帮助都会受到赞赏。感谢。

<html>
  <head>
  </head>
  <body>
    <div class="container">

      <form id="test_form">
            <input type="submit">
      </form>

      <div id="inputs">
      </div>
    </div>

    <script src="../static/js/jquery-1.11.0.min.js"></script>
    <script src="../static/js/loader.min.js"></script>
    <script>


    $("#test_form").submit(function() {
        // this variable is just an example, the actual variable will be
        // returned via ajax and will have 1-20 inputs
        var inputs = {
            input1: "default1",
            input2: "default2"
        }

        for (var key in inputs) {
            var li = $("<li>")
            var input = $("<input>")
            input.attr({
                type: "text",
                value: inputs[key],
                id: "id_" + key
            })
            li.append(input)
            $("#inputs").append(li)
            input.onchange
        }

        return false; // stop the form from submitting
    });

    var onChangeFunction = function(){
       // does not show id of the input the text was changed on
       alert($(this).id)
       alert($(this).value)
    }

    $("#inputs").delegate("input", "change", onChangeFunction)


    </script>
  </body>
</html>

1 个答案:

答案 0 :(得分:2)

jQuery对象没有id属性或value属性。您需要使用.attr()来获取id(或有时.prop())等元素的DOM属性,并且可以使用.val()来阅读value属性:

alert($(this).attr("id"))
alert($(this).val())