jQuery prepend方法不能处理输入

时间:2013-12-08 09:56:12

标签: jquery

我想在表单的每个<input>元素中添加一些文本。为此,我尝试使用jQuery的 prepend 方法。但它似乎没有用。 在下面的示例中,它适用于form-和p-Elements,但不适用于input-Elements。我做错了什么?

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Title</title>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        <script>
            $(document).ready(function(){
                $("form,input,p").each(function(){
                    $(this).prepend("<p>Hello "+$(this).attr("id")+"</p>");
                });
            });
        </script>
    </head>
    <body>
        <p id="p1">Some text</p>
        <form id="frm">
            <input type="text" id="foo" />
            <input type="text" id="bar" />
            <p id="p2">Some more text</p>
        </form>
    </body>
</html>

2 个答案:

答案 0 :(得分:3)

您实际上看到的是正常行为。您不能在input标记内添加任何内容。因为,基本上inputvoid element。它里面不包含任何contents/elements

请在此处阅读:void elements

答案 1 :(得分:2)

它不起作用,因为输入是html中的自闭(无效)实体。不能包含TEXT实体,如表格和parargraphs。 相反,他们使用“价值”属性。

试试这个:

$("input").each(function(){
    $(this).val("Hello "+$(this).attr("id")+$(this).val());
});