2013-01-23 128 views
3

我有一個kendoUI下拉列表定義如下:觸發select事件編程

@(Html.Kendo().DropDownList() 
        .Name("EditGroupSelector") 
        .BindTo(Model.Groups) 
        .Events(
        events => events 
         .Select("onEditGroupSelected") 
        ) 
      ) 

據我瞭解,選擇事件不會是說我調用API如下觸發:

editGroupSelector.select(0); 

選擇後第一個項目手動,我想手動觸發選擇事件:

editGroupSelector.trigger("select");//api calls dont trigger events -> trigger it manually 

這個調用事件,但事件處理程序中,我沒有我的情況下,因此不能獲得新的選擇值:

function onEditGroupSelected(e) { 
    var nameOfGroup = e.item.text();//e.item does not exist when triggered manually 
} 

我如何可以觸發事件,這樣我可以實際使用的「e.item」內我的事件處理程序?

+1

你知道嗎,如果你想獲得所選項目的'text',你可以使用'editGroupSelector.text()'並且如果你手動或自動選擇了這個值,它們都可以工作嗎? – OnaBai

+0

哦,謝謝..我不知道! – r3try

+0

對於「完整性」的問題,我已經添加了一個關於如何模擬事件的例子,以防萬一您需要(或其他人) – OnaBai

回答

11

jQuery trigger函數有一個可選參數,它們是參數。您需要手動添加它,使其兼容與自動調用。您應該添加(至少)item

例子:

如果dropDownListiddropdownlist你可以創建參數如下:

dropDownList.select(3); 
dropDownList.trigger("select", 
     { item: $("li.k-state-selected", $("#dropdownlist-list")) } 
); 

注:要注意這是非常重要的list裝飾(開放dropDownList)沒有被您定義的id(例如dropdownlist)標識,但id後跟-list(例如:dropdownlist-list)。這就是爲什麼jQuery選擇器爲$("li.k-state-selected", $("#dropdownlist-list")

+0

以及如何將該項添加到觸發器(「選擇」)? – r3try

+0

請參閱答案中的**示例**。閱讀**註釋**。 – OnaBai

+0

謝謝你的例子和解釋 - 這一個幫助我很多! – r3try