首页 > 解决方案 > 根据从 jquery 的下拉菜单中单击的内容更改值

问题描述

我有一个下拉菜单,其中包含我的 C# 模型中的列表。现在我想根据我从菜单中选择的内容更改一个值。

$(document).ready(function() {
  $("#Bereich").val('@Model.Bereich').change('click', function() {
    $("select option:selected").each(function() {
      if ($(this) == "Something") {
        $('#kst').val(123);
      }
      
      if ($(this) == "Somethingelse") {
        $('#kst').val(345);
      }
    });
  }).change();
});

我对 jQuery 很陌生,所以我不确定如何从列表中获取元素。

标签: jquerydrop-down-menu

解决方案


您的代码中有两个主要问题。首先change('click', fn)不是有效的语法。鉴于我们正在处理一个select元素,我假设您正在尝试创建一个change事件处理程序,因此代码应该是on('change', fn)

其次,$(this)会给你一个jQuery对象。这永远不会等于字符串值,因此条件永远不会命中。我假设您正在尝试测试要用val()于此的选定项目的值。

请注意,在下面的示例中,我存储#kst在一个 jQuery 对象中并在需要保存访问 DOM 的地方重复引用它,这是 JS 中大部分性能损失的地方。另请注意,您可以val()直接从select元素访问 - 您不需要检索其中的option:selected元素。

jQuery($ => {
  let $kst = $('#kst');

  $("#Bereich").val('@Model.Bereich').on('change', function() {
    $("select").each(function() {
      let value = $(this).val();
      
      if (value === "Something") {
        $kst.val(123);
      } 
      
      if (value === "Somethingelse") {
        $kst.val(345);
      }
    });
  }).change();
});

推荐阅读