jQuery - 调用.change();在javascript代码中不会触发

时间:2014-09-09 15:51:32

标签: javascript jquery function asp.net-mvc-4

在这个问题中,所有代码都被概括了 正如问题标题所解释的那样,我有一个jQuery函数:

$(document).ready(function() {
    if (something) {
       // This does something
    } else if (something else) {
       // This does something else
    } else { 
       // And this does something else
    }
});

在此功能中,当页面加载时,它会检查网页上的信息 我有一个隐藏的输入,其中包含我检查的值。这有效。
我有2个带有两个ID的下拉列表(为了参数):ddl1,ddl2

在MVC 4中,它们看起来像这样:

@Html.DropDownListFor(model => model.SelectedValue, Model.List1, new { id = "ddl1" })
@Html.DropDownListFor(model => model.SelectedValue, Model.List2, new { id = "ddl2" }) 

接下来,我有两个On Change jQuery方法,相应地:

$("#ddl1").change(function () {
     // Does something when the index of the first drop down changes
});

$("#ddl2").change(function () {
    // Does something when the index of the second drop down changes
});

当我更改页面上的索引时,会触发这些方法。 现在,这是我的问题发挥作用的地方。

在我的$(document).ready()函数中,我从这个方法中调用了On Change函数,它不会触发......

$(document).ready(function() {
    if (something) {
       if (condition for ddl1) {
          $("#ddl1").change(); // Does not fire.
       } else {
          $("#ddl2").change(); // Does not fire.
       }
    } else if (something else) {
       // This does something else
    } else { 
       // And this does something else
    }
});

对我而言,为什么这些功能没有解雇是没有意义的 这是一个直接的方法调用 如果有人能对这件事情有所了解,我会感激不尽。

干杯。

2 个答案:

答案 0 :(得分:-1)

使用jQuery触发更改方法的正确方法是使用触发器函数,这样:

$(document).ready(function() {
  if (something) {
   if (condition for ddl1) {
      $("#ddl1").trigger("change"); // TRIGGER change event
   } else {
      $("#ddl2").trigger("change"); // TRIGGER change event
   }
  } else if (something else) {
   // This does something else
  } else { 
   // And this does something else
  }
});

此处有更多信息:http://api.jquery.com/trigger/

答案 1 :(得分:-1)

我修改了我的代码以执行以下操作(我只使用普通的javascript,因为我没有时间弄清楚为什么这是一个问题):

1)我将我的on change jQuery方法移除到一个普通的javascript函数: 从:

$("#ddl1").change(function () { /*code*/ });

要:

function changeDdl1 () { /*code*/ }

2)我拿出触发器来简单地添加一个javascript调用: 从:

$("#ddl1").trigger("change");

要:

changeDdl1();

3)我将@onchange MVC 4属性添加到我的下拉列表中:

@Html.DropDownListFor(model => model.SelectedValue, Model.List1,
                      new { id = "ddl1", @onchange = "changeDdl1();"})

感谢所有提供帮助和提示的人。

干杯。