0

大家好,所以我有两个下拉选择,当用户选择第一个时,它只在第二个上显示具有相应值的选项,但我需要做的是将值更改为唯一值并在第二个上使用 href一组用于链接值的选项是 js:

jQuery.fn.filterOn = function(selectFrom, values) {
    return this.each(function() {
        var select = this;
        var options = [];
        $(select).find('option').each(function() {
            options.push({value: $(this).val(), text: $(this).text()});
        });
        $(select).data('options', options);
        console.log(selectFrom);
        $(selectFrom).change(function() {
            var options = $(select).empty().data('options');
            var haystack = values[$(this).val()];
            console.log(haystack);
            $.each(options, function(i) {
                var option = options[i];
                if($.inArray(option.value, haystack) !== -1) {
                    $(select).append(
                    $('<option>').text(option.text).val(option.value)
                    );
                }
            });
        });            
    });
};

那么这就是选择的样子:

<select id="1" name="1">
<option value="1">1</option>
<option value="2">2</option>
</select>

<select id="2" name"2">
<option href="1" value="1">1</option>
<option href="1" value="1">2</option>
<option href="1" value="1">3</option>
<option href="2" value="2">1</option>
<option href="2" value="2">2</option>
<option href="2" value="2">3</option>
</select>

我需要做的是让第二个选择根据href而不是值进行排序,我尝试了一些事情,但似乎发生的一切都是其他jquery开始播放。

就目前而言,如果我在第一次选择时选择一个值为 1 的选项,它只会在第二次选择时显示具有相应值的选项,但我需要它来显示具有相应 href 的选项

4

1 回答 1

1
$('select#1').on('change', function() {
  $('select#2 option[href="'+ this.value +'"]').show();
  $('select#2 option[href!="'+ this.value +'"]').hide();
});

演示

或者,在单个链中:

$('select#1').on('change', function() {
    $('select#2')
          .find('option[href="'+ this.value +'"]') // find options with selected value           
          .show() // show them
          .end()  // backtrack to select#2
          .find('option[href!="'+ this.value +'"]') // find don't match options
          .hide();  // hide unmatched options
});

演示

笔记

不要只使用数字id

于 2012-08-14T18:12:24.897 回答