javascript - jQuery 从选择框中删除选项

标签 javascript jquery html

我想用 jQuery 多次添加同一个选择框。 这是我正在尝试的代码:

$(".add").on("click", function(){ 
    $select_box = '<div><select><option value="v1">Value 1</option><option value="v2">Value 2</option><option value="v3">Value 3</option></select></div>';

 $('.box').append($select_box);

});

演示: http://jsfiddle.net/hC578/

上面的代码工作正常。但是,我想检查是否在前面的任何选择框中选择了一个选项值,它不应该出现在后面的选择框中。

例如,如果在第一个选择框中选择了选项1,然后添加了另一个选择框,则不应在其中列出选项1。

如何做到这一点?

最佳答案

试试这个:

html

<div class="box">


</div>

<button class="add">Add</button>

js

$(".add").on("click", function(){ 
    $select_box = '<div><select><option value="v1">Value 1</option><option value="v2">Value 2</option><option value="v3">Value 3</option></select></div>';
var ddl = $($select_box).children();

    var a= $("select").val();


    if(a!="")
        $("option[value='" + a + "']").remove();

 $('.box').append($select_box);


});

fiddle

好的,我稍微改一下,请试试这个版本:

js

$(".add").on("click", function(){ 
    $select_box = '<div><select><option value="v1">Value 1</option><option value="v2">Value 2</option><option value="v3">Value 3</option></select></div>';
var ddl = $($select_box).children();

    var a= new Array();
    var i=0;
    $("select").each(function(){               
        a[i] = $(this).val();
        i++;
    });

    if(a.length>0){
        for(var j=0; j<a.length; j++){
            $(ddl).find("option[value='"+a[j]+"']").remove();
        }
    }

 $('.box').append(ddl);


});

fiddle

对于您的最后一个请求:

js

$(".add").on("click", function(){ 
    $select_box = '<div><select onchange="ddlChange(this);"><option value="v1">Value 1</option><option value="v2">Value 2</option><option value="v3">Value 3</option></select></div>';
var ddl = $($select_box).children();

    var a= new Array();
    var i=0;
    $("select").each(function(){               
        a[i] = $(this).val();
        i++;
    });

    if(a.length>0){
        for(var j=0; j<a.length; j++){
            $(ddl).find("option[value='"+a[j]+"']").remove();
        }
    }

 $('.box').append(ddl);


});

window.ddlChange = function(ddl){

    var a= new Array();
    var i=0;
    $("select").each(function(){               
        a[i] = $(this).val();
        i++;
    });

    if(a.length>1){
        for(var j=0; j<a.length; j++){
            $(ddl).find("option[value='"+a[j]+"']").remove();
        }
    }

 $('.box').append(ddl);


};

fiddle

关于javascript - jQuery 从选择框中删除选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23906538/

相关文章:

javascript - 解决 jQuery-ui 日期范围错误?

javascript - NodeJS 正则表达式匹配字符串中的 4 位数字与 'OR' 字

javascript - 尝试将数据插入 mySql 数据库时出错

javascript - 如何使用jquery选择具有两个特定属性的所有元素

javascript - AngularJS 的初始加载微调器

javascript - jQuery JSON 通过 $.each 解析 - 无法获取未定义的长度

javascript - Bootstrap 工具提示 - 使用 jquery 动态更改 css 和位置

jquery - 如何对字符串进行减法

用于使用 preg_replace_callback 评估 html 的 if/else 条件的 PHP 正则表达式模式

javascript - 防止右键单击元素打开上下文菜单