Backbone.js 单击并更改事件不适用于jquery-select2选项
我正在使用jquery-select2库实现我的下拉列表 在我的例子中,我希望能够在用户单击下拉列表中的选项后触发操作。但是,单击或更改事件似乎不起作用 haml文件:Backbone.js 单击并更改事件不适用于jquery-select2选项,backbone.js,coffeescript,onchange,jquery-select2,Backbone.js,Coffeescript,Onchange,Jquery Select2,我正在使用jquery-select2库实现我的下拉列表 在我的例子中,我希望能够在用户单击下拉列表中的选项后触发操作。但是,单击或更改事件似乎不起作用 haml文件: %select.medium.name_selector.pull_left %option.placeholder{value:"placeholder", disabled: "disabled", selected: "selected"} Start or find a conversation with a mus
%select.medium.name_selector.pull_left
%option.placeholder{value:"placeholder", disabled: "disabled", selected: "selected"} Start or find a conversation with a muser
%option{value: "nick"} nick
%option{value: "sam"} sam
%option{value: "john} john
events:
"click option" : "displayChatScreen"
displayChatScreen: (e) ->
e.preventDefault()
nickname = @$("select.name_selector option:selected").val()
if nickname != "placeholder"
Backbone.history.navigate "messages/#{nickname}",
trigger: true
else
alert "You need to select a friend to chat"
咖啡脚本文件:
%select.medium.name_selector.pull_left
%option.placeholder{value:"placeholder", disabled: "disabled", selected: "selected"} Start or find a conversation with a muser
%option{value: "nick"} nick
%option{value: "sam"} sam
%option{value: "john} john
events:
"click option" : "displayChatScreen"
displayChatScreen: (e) ->
e.preventDefault()
nickname = @$("select.name_selector option:selected").val()
if nickname != "placeholder"
Backbone.history.navigate "messages/#{nickname}",
trigger: true
else
alert "You need to select a friend to chat"
一旦我更改select2下拉框的选项,是否仍有触发操作的方法
注意:我尝试了单击事件和更改事件,但它们都不适用于select2。您不能像使用普通的
小部件那样使用普通的更改事件,但实际上您需要将displayChatScreen
方法附加到
e、 g
假设这是select2小部件的选择器,并且您正在适当的上下文中运行它
当您使用主干网提供的默认events
hash时,实际上是这样做的:
$el.on('change', 'option', this.displayChatScreen);
由于select2实际上将
(因此
标记替换为
对),因此您永远不会真正收到浏览器事件
此外,change
事件在父
而不是
元素上触发。使用select2时,您不能像在普通
小部件中那样使用普通更改
事件,但实际上需要将显示聊天屏幕
方法附加到
e、 g
假设这是select2小部件的选择器,并且您正在适当的上下文中运行它
当您使用主干网提供的默认events
hash时,实际上是这样做的:
$el.on('change', 'option', this.displayChatScreen);
由于select2实际上将
(因此
标记替换为
对),因此您永远不会真正收到浏览器事件
此外,change
事件在父
而不是
元素上触发。初始化时,您可以通过不呈现选项而将其作为选项传递给select2来避免所有问题
您可以制作如下所示的输入标记:
<input name="someName" value="selectedValues">
然后使用如下选项初始化select2:
$('input[name=“SomeName”]”)。选择2(选项)
这样做将允许您安全地侦听对输入的更改,就像您经常使用事件散列一样 您可以通过不呈现选项,而是在初始化时将其作为选项传递给select2来避免所有问题
您可以制作如下所示的输入标记:
<input name="someName" value="selectedValues">
然后使用如下选项初始化select2:
$('input[name=“SomeName”]”)。选择2(选项)
这样做将允许您安全地侦听对输入的更改,就像您经常使用事件散列一样