根据从 jquery 中的下拉菜单中单击的内容更改值

Change value based on what clicked from dropdown menu in 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 很陌生,所以我不确定如何从列表中获取元素。

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

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

请注意,在下面的示例中,我将 #kst 存储在 jQuery 对象中,并在需要保存访问 DOM 的地方重复引用它,这是大多数性能损失的地方JS。另请注意,您可以直接从 select 元素访问 val() - 您不需要检索其中的 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();
});