【问题标题】:Use dropdown list selection to populate second dropdown list contents使用下拉列表选择填充第二个下拉列表内容
【发布时间】:2015-05-26 06:49:40
【问题描述】:

下面的代码用不同的裤子品牌填充第一个下拉列表:

$.each(pantsBrands, function(i){
    var li = $('<li>')
        .appendTo(pantsList);
    var aaa = $('<a>')
        .text(pantsBrands[i])
        .attr('onclick','askPantStyle()')
        .appendTo(li);
});

在接下来的代码中,我打算以某种方式使用上面的选择来填充第二个下拉框中的内容,该下拉框中由与第一个选择的品牌相关的样式组成。

var askPantStyle = function(){
    $('#pantStyleDiv').slideDown();
    alert($(this).text());
}

我使用警报来检查 (this) 会返回什么。本来希望是第一次选择的文本内容,结果出现警告框时,内容为空。

相关html如下:

<div id='pantsLanding'>
            <p class="lead">Which brand of pants fits you best?</p>
            <p class="lead">
                <!-- Split button -->
                <div class="btn-group">
                    <button type="button" class="btn btn-default">Brand</button>
                    <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
                        <span class="caret"></span>
                        <span class="sr-only">Toggle Dropdown</span>
                    </button>
                    <ul id="dropPants" class="dropdown-menu scrollable-menu" role="menu">
                    </ul>
                </div>
            </p>  
        </div>
        <div id='pantStyleDiv'>
            <p class="lead">What style do you prefer?</p>
            <p class="lead">
                <!-- Split button -->
                <div class="btn-group">
                    <button type="button" class="btn btn-default">Style</button>
                    <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
                        <span class="caret"></span>
                        <span class="sr-only">Toggle Dropdown</span>
                    </button>
                    <ul id="dropPantStyle" class="dropdown-menu scrollable-menu" role="menu">
                    </ul>
                </div>
            </p>  
        </div>

【问题讨论】:

  • 您的相关 HTML 是什么?并且引用函数名称 .attr('onclick', 'askPantStyle()') 使其成为字符串,它不会 调用 函数 (.attr('onclick', askPantStyle)) 或从函数 (.attr('onclick', askPantStyle())) 获取返回值以使用 作为点击处理程序。也就是说,为什么要设置onclick 事件处理程序,而不是使用jQuery 的click() 方法?
  • 我不知道...我只是尝试过,但似乎效果不佳。一旦 div 加载了第一个下拉框,我就收到了警报,并且 askPantStyle div 已经可见......

标签: javascript jquery drop-down-menu selector taffydb


【解决方案1】:

在下面添加了一个快速示例,说明如何解决此问题。 Bootstrap 下拉菜单的使用非常具体,所以我使用的是click 事件而不是change,这是 selects 的正常事件。

$('#dropPants').on('click', 'li a', function() { ... });

我也没有添加任何数据属性,因为我没有您的解决方案的全貌。但我希望你可以用它来让事情像你想要的那样工作。

您没有提供任何数据,因此我为品牌创建了一个数组,并为样式创建了一个对象。每个品牌在包含样式数组的对象中都有一个属性

var pantsBrands = ['levis', 'lee', 'lindeberg'];
var pantsStyles = { 
        'levis': ['501','502'],
        'lee': ['bruce','kim'],
        'lindeberg': ['lindeberg1','lindeberg2']
};

无论如何,下面是一个 Bootstrap 下拉列表填充另一个下拉列表的工作示例:

var pantsBrands = ['levis','lee','lindeberg'];
var pantsStyles = { 'levis': ['501','502'],
                    'lee': ['bruce','kim'],
                    'lindeberg': ['lindeberg1','lindeberg2']
                  };

$.each(pantsBrands, function(i) {
  $('#dropPants').append('<li><a href="#">'+pantsBrands[i]+'</a></li>');
});

$('#dropPants').on('click', 'li a', function() {
  $('#dropPantStyle').html('');
  var showStyles = pantsStyles[$(this).text()];
  $.each(showStyles, function(i) {
    $('#dropPantStyle').append('<li><a href="#">'+showStyles[i]+'</a></li>');
  });   
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet" />
<div id='pantsLanding'>
  <p class="lead">Which brand of pants fits you best?</p>
  <p class="lead">
    <!-- Split button -->
    <div class="btn-group">
      <button type="button" class="btn btn-default">Brand</button>
      <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
        <span class="caret"></span>
        <span class="sr-only">Toggle Dropdown</span>
      </button>
      <ul id="dropPants" class="dropdown-menu scrollable-menu" role="menu">
      </ul>
    </div>
  </p>
</div>
<div id='pantStyleDiv'>
  <p class="lead">What style do you prefer?</p>
  <p class="lead">
    <!-- Split button -->
    <div class="btn-group">
      <button type="button" class="btn btn-default">Style</button>
      <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
        <span class="caret"></span>
        <span class="sr-only">Toggle Dropdown</span>
      </button>
      <ul id="dropPantStyle" class="dropdown-menu scrollable-menu" role="menu">
      </ul>
    </div>
  </p>
</div>

【讨论】:

    猜你喜欢
    • 2017-04-06
    • 2012-01-04
    • 2017-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多