我需要动态更改元素类型,以下是我的工作方式:
$(function() {
$('.click_me').click(function(ev) {
var condition_value_1 = $('#condition_value_1');
var select_html = '<select name="condition_value_1" id="condition_value_1"></select>';
condition_value_1.after().html(select_html);
condition_value_1.remove();
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<input type="text" id="condition_value_1">
<span class="click_me">Click Me</span>
在上面的代码片段中看到的更改类型后,我应该删除前一个元素,但因为它们共享(并且这是必需的)相同的ID,所以新的SELECT将被删除。有什么方法可以避免这种情况吗?
答案 0 :(得分:5)
如果要替换,可以使用replaceWith ..
$(function() {
$('.click_me').click(function(ev) {
var condition_value_1 = $('#condition_value_1');
var select_html = '<select name="condition_value_1" id="condition_value_1"></select>';
condition_value_1.replaceWith(select_html);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<input type="text" id="condition_value_1">
<span class="click_me">Click Me</span>
答案 1 :(得分:1)
使用name属性而不是id来删除
$(function() {
$('.click_me').click(function(ev) {
var condition_value_1 = $('#condition_value_1');
var select_html = '<select name="condition_value_1" id="condition_value_1"></select>';
condition_value_1.after().html(select_html);
$('[name="ElementNameHere"]')[0].remove();
});
});
请注意,这只会删除搜索DOM时遇到的第一个条目。