jQuery replaceWith显示文本而不是元素

时间:2017-05-23 15:36:32

标签: jquery html

我有以下jQuery用选择字段替换输入字段。

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>");

加载页面时会运行。但是不是用select html替换元素,而是用html替换为text:

"<select class='input_class_text' id='input_id_var' name='input_name_text'></select>"

所以在页面上而不是选择你只看

<select class='input_class_text' id='input_id_var' name='input_name_text'></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>");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="id_var" type="text" />

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

由于

1 个答案:

答案 0 :(得分:5)

您在DOM元素上调用.replaceWith(),而不是在JQuery对象上调用input = $("input[id$='id_var']"); 。 只需编辑您的第一行:

input_class = input.attr("class");
input_id = input.attr("id");
input_name = input.attr("name");

然后调整你的下一行:

SELECT recipes_Name 
FROM tblrecipes
INNER JOIN tblingredients
ON tblrecipes.recipes_ID = tblingredients.ingredients_ID
WHERE ingredients_name = variable1 AND variable2 AND variable3