我如何在每个加载页面的带有下拉过滤器的jQuery上设置默认结果?

问题描述 投票:0回答:2

我如何在每个加载页面的下拉列表过滤器上设置默认结果?就我而言,我想在每次加载页面时显示过滤器的结果之一。但不幸的是,事实并非如此。您必须先选择过滤器,然后得出结果。这是我的代码:

$('#preference, #style').on('change', function(){
    var preference = $('#preference');
    var style = $('#style');
    
    if ( preference.prop('selectedIndex') > 0 && style.prop('selectedIndex') > 0 ) {
        $('.result.active').removeClass('active');
        $('.result').filter('[data-preference="' + preference.val() + '"][data-style="' + style.val() + '"]').addClass('active');            
    }
    
});
.result {
  display: none;
}

.result.active {
  display: block;
}
.kontener {
  display: flex;
  width: 100%;

}

.kontener1 {
  display: flex;
  width: 50%;
  margin-bottom: 20px;

}

.baris {
  flex: 50%;
  margin: 0 3%;
  }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="kontener">
  <div class="baris">
    <div class="kontener1">
      <div class="kota">
        <h3 class="judul3">
        City
        </h3>
        <select id="preference">
          <option value="select">select</option>
          <option value="Jakarta">Jakarta</option>
          <option value="Bandung">Bandung</option>
          <option value="Surabaya">Surabaya</option>
          <option value="Makassar">Makassar</option>
          <option value="Bali">Bali</option>
          <option value="Gresik">Gresik</option>
          <!--<option value="Bogor">Bogor</option>-->
          <option value="Malang">Malang</option>
          <option value="Sidoarjo">Sidoarjo</option>
        </select>
      </div>
      <div class="jenis">
        <h3 class="judul3">
          Type
        </h3>
        <select id="style">
          <option value="select">select</option>
            <option value="Retail">Retail Store</option>
            <option value="Modern">Modern Store</option>
            <option value="System">System Integrator</option>
            <option value="Audio">Audio Video / Home Theater Specialist</option>
          </select>
        </div>
    </div>
  </div>
</div>
<div class="result" data-preference="Jakarta" data-style="Retail">
jakarta retail
</div>

这是我的小提琴:https://jsfiddle.net/adenoe/fb7qmzeh/28/

请帮助我。

我想要的结果是,每次我加载页面时都显示过滤器结果之一,而不必选择下拉菜单。

jquery html css filter dropdown
2个回答
0
投票

然后,必须在页面加载后将下拉菜单的第一个选项设置为所选的,像这样

$("#target")[0].selectedIndex = 0

0
投票

据我了解,您想做两件事

  • 设置页面加载时两个选择字段的默认值。
  • 触发与值关联的动作

对于第一部分,最简单的方法是在html中设置所选值

<!-- first select field -->
<option value="Bandung" selected>Bandung</option>

<!-- second select field -->
<option value="Retail" selected>Retail Store</option>

只需将'selected'属性添加到您想要作为默认选项的选项。如果选择的值始终相同且不依赖于其他因素,请执行此操作。

如果要动态设置所选值,请通过javascript设置。

// first select field
$('#preference').val('Bandung');

// second select field
$('#style').val('System');

现在是第二部分,请在js文件或document的末尾调用触发器更改函数。准备好了,这将应用您的函数并给出预期的行为。您只需要为一个字段调用它,因为这是两者的通用处理程序。

// on load trigger change
$('#preference').trigger('change');

这是您的零钱的分叉:https://jsfiddle.net/s213zdqr/

© www.soinside.com 2019 - 2024. All rights reserved.