簡體   English   中英

jQuery-調用.change(); 在javascript代碼中不會觸發

[英]jQuery - Calling .change(); in javascript code does not fire

在這個問題中,所有代碼都已被概括。
正如問題標題所解釋的,我有一個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
    }
});

對我來說,為什么這些功能沒有觸發是沒有意義的。
這是直接方法調用。
如果有人能對此事有所啟發,我將不勝感激。

干杯。

使用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/

我修改了代碼以執行以下操作(我只使用普通的javascript,因為我沒有時間弄清楚為什么這是一個問題):

1)我將on 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();"})

謝謝所有提供幫助和提示的人。

干杯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM