使用jQuery动态更改选择列表后选择选项

时间:2015-06-09 15:24:07

标签: javascript jquery

我已经能够删除并替换html选择列表中的所有选项(使用jQuery),但我无法从列表中进行选择。问题似乎与“on('click')”事件有关,但我不确定原因。有人可以帮忙吗?

$(document).on('click', '#selectId', function() {
    var option1 = $('<option></option>').attr("value", "option value").text("Text 1");
    var option2 = $('<option></option>').attr("value", "option value").text("Text 2");
    $("#selectId").children().remove().end().append(option1).append(option2);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<body>
<div>
    <select name="name" id="selectId">
        <option>--- select ---</option>
        <option>1</option>
        <option>2</option>
    </select>
</div>
</body>

3 个答案:

答案 0 :(得分:0)

每次点击select元素时,您都会摧毁孩子并用两个选项替换它们。您可以从列表中进行选择,但由于您再次单击,该列表将再次销毁,并替换为两个全新的相同子项,默认情况下会选择第一个。你可以替换

$(document).on('click', '#selectId', function() {

$(document).ready(function() {

因此,更改只会在页面加载时发生,或者在 时重新考虑您的逻辑,以替换选项(例如,不要在每次点击时执行此操作)

答案 1 :(得分:0)

如果初始化必须动态完成,您可以将“on”替换为“one”(请参阅​​here),例如

$(document).one('click', '#selectId', function() {
    var option1 = $('<option></option>').attr("value", "option value").text("Text 1");
    var option2 = $('<option></option>').attr("value", "option value").text("Text 2");
    $("#selectId").children().remove().end().append(option1).append(option2);
});

应该触发事件处理程序不超过一次。

答案 2 :(得分:0)

而不是单击使用更改事件处理程序

$(document).on('change', '#selectId', function() {
    var option1 = $('<option></option>').attr("value", "option value").text("Text 1");
    var option2 = $('<option></option>').attr("value", "option value").text("Text 2");
    $("#selectId").children().remove().end().append(option1).append(option2);
});