切换元素类型但保持相同的ID

时间:2016-11-07 13:23:14

标签: javascript jquery

我需要动态更改元素类型,以下是我的工作方式:

$(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将被删除。有什么方法可以避免这种情况吗?

2 个答案:

答案 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时遇到的第一个条目。