jQuery替换为并追加
jQuery replace with and append
我有一段简单的代码,如果用户选择yes,它会将选择框更改为文本字段。如果用户选中文本字段旁边的框,我希望能够将其更改回下拉列表。
然而,问题是,当它替换元素时,它不会将复选框附加到它上面
$(document).on("change", "[name=projectRelated]", function(e) {
// Define our values
var prj = this.value;
// Depending on our choice
switch(prj){
case 'Yes':
$(this)
.replaceWith($('<input/>',{'type':'text','value':'', 'name':'projectRelatedDesc', 'placeholder':'Enter project details'}))
.append('<div class="checkbox"><label><input type="checkbox" class="notPrjRelated"> No</label>');
break;
}
});
这是一把小提琴:https://jsfiddle.net/0ytut7ec/
我错过了什么?
尝试在此上下文中使用.after()
。执行顺序也很重要。
如果在移除/替换目标元素后添加新元素,则不会添加该新元素,因为目标在DOM中失去了引用。
$(document).on("change", "[name=projectRelated]", function(e) {
// Define our values
var prj = this.value;
// Depending on our choice
switch (prj) {
case 'Yes':
$(this)
.after('<div class="checkbox"><label><input type="checkbox" class="notPrjRelated"> No</label>')
.replaceWith($('<input/>', {
'type': 'text',
'value': '',
'name': 'projectRelatedDesc',
'placeholder': 'Enter project details'
}))
break;
}
});
演示
$(document).on("change", "[name=projectRelated]", function(e) {
// Define our values
var prj = this.value;
// Depending on our choice
switch (prj) {
case 'Yes':
$(this).after('<div class="checkbox"><label><input type="checkbox" class="notPrjRelated"> No</label>').end()
.replaceWith($('<input/>', {
'type': 'text',
'value': '',
'name': 'projectRelatedDesc',
'placeholder': 'Enter project details'
}))
break;
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select class="span2" name="projectRelated">
<option value="">Select Option</option>
<option value="Yes">Yes</option>
<option value="No">No</option>
</select>
提供替代答案:https://jsfiddle.net/Twisty/6mx4r3s8/
$(document).on("change", "[name=projectRelated]", function(e) {
// Define our values
var prj = this.value;
// Depending on our choice
switch (prj) {
case 'Yes':
var $inp = $('<input/>', {
'type': 'text',
'value': '',
'name': 'projectRelatedDesc',
'placeholder': 'Enter project details'
});
var $chk = $('<div class="checkbox"><label><input type="checkbox" class="notPrjRelated">No</label></div>');
$(this).replaceWith($inp);
$inp.after($chk);
break;
}
});
在这里,我们创建输入和复选框,替换,然后追加。
相关文章:
- 无法从 jQuery RSS Feed 中的 localStorage 动态替换类
- 表追加而不附加最后一个元素
- 我如何找到一个句子中的所有空格并替换忽略它们
- 如何用更合适的内容替换document.write
- 追加子数据 URI,替换 IE 中的其他对象
- InnerHTML 追加项而不是替换项
- jQuery - 追加/替换事件侦听器(当事件处理程序未知时)
- jQuery替换为并追加
- 追加并替换data-*属性URL的查询字符串值
- 为什么 window.location 追加而不是替换 IE 中的 URL
- 如何使用 Jquery 替换或覆盖容器中追加的 html 字符串
- InnerHTML追加而不是替换
- Javascript push()替换元素,而不是追加
- append不是追加内容,而是替换内容
- 查找,替换和追加新的dom元素
- javascript img元素插入(替换,而不是追加)
- jquery追加数据不替换it解决方案
- 如果子元素不存在,则追加图像;如果子元素存在,则替换
- 如何保持标签值始终追加并且不被新值替换
- 如果找到,如何追加,如果没有找到,如何替换?(xml.每个循环)