jQuery replaceWith显示文本而不是元素

Rut*_*ung 1 html jquery

我有以下jQuery用select字段替换输入字段.

input = $("input[id$='id_var']")[0];
input_class = input.getAttribute("class");
input_id = input.getAttribute("id");
input_name = input.getAttribute("name");
//remove input and replace with a select drop down
input.replaceWith("<select class='"+input_class+"' id='"+input_id+"' name='"+input_name+"'></select>");
Run Code Online (Sandbox Code Playgroud)

当我加载页面时运行.但是不是用select html替换元素,而是用html替换它作为文本:

"<select class='input_class_text' id='input_id_var' name='input_name_text'></select>"
Run Code Online (Sandbox Code Playgroud)

所以在页面而不是你刚看到的选择

<select class='input_class_text' id='input_id_var' name='input_name_text'></select>
Run Code Online (Sandbox Code Playgroud)

上述行为的片段:

input = $("input[id$='id_var']")[0];
input_class = input.getAttribute("class");
input_id = input.getAttribute("id");
input_name = input.getAttribute("name");
//remove input and replace with a select drop down
input.replaceWith("<select class='"+input_class+"' id='"+input_id+"' name='"+input_name+"'></select>");
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="id_var" type="text" />
Run Code Online (Sandbox Code Playgroud)

有人能告诉我为什么会这样吗?

谢谢

Zen*_*noo 5

您正在调用.replaceWith()DOM元素,而不是JQuery对象.只需编辑您的第一行:

input = $("input[id$='id_var']");
Run Code Online (Sandbox Code Playgroud)

然后调整你的下一行:

input_class = input.attr("class");
input_id = input.attr("id");
input_name = input.attr("name");
Run Code Online (Sandbox Code Playgroud)