2013-01-23 127 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