使用jQuery过滤下拉菜单

时间:2013-10-05 13:25:33

标签: javascript jquery html css

出于某种原因,一些选择有效,但大部分都没有。我无法弄清楚我做错了什么,也许你可以帮忙吗? 这是关于codepen的现场演示:http://codepen.io/AlexBezuska/pen/dHmge 我的jQuery:

$('#ddlOffice option').hide();
    $('#ddlBusiness').change(function(){
      var selectedBusiness = $( "#ddlBusiness option:selected").val();
      selectedBusiness = parseFloat(selectedBusiness);
      $('#ddlOffice option').hide();
      $('#ddlOffice option[value="'+selectedBusiness+'"]').show();
      $('#txtBusiness').val($( "#ddlBusiness option:selected").text());
    });

     $('#ddlOffice').change(function(){
      $('#txtOffice').val($( "#ddlOffice option:selected").text());
    });

奖励积分:我想在没有jQuery的情况下这样做,如果有人有一个简单的方法来做显示和隐藏在原始的javascript或想要做一个没有jQuery的分叉会很棒,

谢谢!

2 个答案:

答案 0 :(得分:1)

我想出了一个更好的方法:

var options = $("#ddlOffice").html();
$("#ddlBusiness").change(function(e) {
    var selectedValue = $("#ddlBusiness :selected").val();
    $("#ddlOffice").html(options);
    $('#ddlOffice :not([value="'+selectedValue+'"])').remove();
});

现在正在使用CodePen:http://codepen.io/AlexBezuska/pen/dHmge

答案 1 :(得分:0)

我重写了你的jQuery代码,现在它似乎对我有用(fiddle):

$(function() {
    $('#ddlOffice option').hide();
    $('#ddlBusiness').change(function(){
        var selectedBusiness = parseFloat($("#ddlBusiness").val());
        $('#ddlOffice option').hide();
        $('#ddlOffice option[value="' + selectedBusiness + '"]').show();
        $('#txtBusiness').val($("#ddlBusiness option:selected").text());
    });
    $('#ddlOffice').change(function(){
        $('#txtOffice').val($(this).find("option:selected").text());
    });
});

请考虑:

  1. 如果您要将JavaScript放在HTML之前,请记得在jQuery中使用document.ready$(function(){ })
  2. 您不能拥有与#ddlOffice选择中相同的值的选项。我的意思是使用将返回相同值的选项的目的是什么?!
  3. 您尚未在第二个option中关闭其中一个select