0

我在使用“选项选择树”代码时遇到了一些问题。第一步它工作正常,但第二步不行。我不明白为什么...

function show_opt(id,options){
  var n = id.val();
  var nexts = (id.next('select'));

  var showOptions = options.filter('.'+n);
  nexts.html(showOptions);
  nexts.prop('selectedIndex', 0);
}

$(document).ready(function() {
  var select = $('#group1').children('select');
      var sn = select.eq(0);

      sn.change(function(){
        $('#print').val((sn.val()));

        var next_s = sn.next('select');

        var fontOptions = next_s.children('option').remove();
        show_opt(sn,fontOptions);
      });
});

这是一个演示:Jsfiddle

4

2 回答 2

0

当您过滤掉元素时,您不需要的元素将被删除。当您进行第二次过滤时,它不会从整个集合开始,而是从第一个过滤结果开始

于 2013-10-10T13:19:43.653 回答
0

提示:使用调试器查看您使用的变量的值是什么。

基本上,您的代码执行以下操作(假设您选择,例如,main_4从第一个菜单):

  1. $('#main').change()你删除所有 12 个<option>元素#sub0

  2. 您将这些元素(仍然是 12 个)传递给show_opt并过滤它们,所以只剩下 3 个(sub0_4.1等等)。

  3. 您将这 3 个元素附加到#sub0. 现在#sub0只有3 个 <option>元素。

  4. 接下来change()只有3 个元素#sub0。假设您选择main_3了这次 - 在您选择filter()了 3 个<option>元素之后show_opt,没有留下任何东西。

希望现在您清楚为什么您的代码不起作用。

于 2013-10-10T13:23:34.917 回答