5

我在我的网站中使用Select2,我正在尝试使用该select2-selecting事件,但它没有触发。我也在应用程序中使用Backbone.js,所以我尝试的第一件事就是将其添加select2-selecting到我的events对象中:

// 'change .city':'cityChanged'
'select2-selecting .city':'cityChanged'

请注意,我有一个change事件被注释掉了——这个change事件可以正常工作。在Select2的文档中,select2-selecting事件直接放在对象上,而不是这样:

$('.city').select2().on('select2-selecting', function(e){ 
     console.log('here');
});

相反,它应该像这样使用:

$('.city').on('select2-selecting', function(e){ 
     console.log('here');
});

我也尝试过以这两种方式添加事件,但事件没有触发(我确实检查过,并且在添加事件之前元素是在 DOM 上创建的)。

当我使用Backbone.js在第一个方法中添加事件时,该事件会列在 chrome 调试控制台的事件侦听器中 - 它只是不会被触发。有谁知道发生了什么?

4

3 回答 3

17

你用的是什么版本的select2

在我意识到我使用的是select2-selecting不存在此事件的 3.3 版本之前,我遇到了同样的问题。

这已包含在 3.4 版本中。

于 2013-07-10T14:26:01.977 回答
12

早期版本也有更改名称:

  • select2-close 现在是 select2:close
  • select2-open 现在是 select2:open
  • select2-opening 现在是 select2:opening
  • select2-selecting 现在是 select2:selecting
  • select2-removed 现在是 select2:removed
  • select2-removing 现在是 select2:unselecting
于 2015-10-05T16:40:26.257 回答
0

在更旧的版本上,@santi-iglesias答案中列出的' select2-removed ' 和 ' select2-removing ' 事件不存在。相反,您已“删除”。此外,要获取受影响的选项值,请使用“ event.val ”。

所以你可以做这样的事情:

$('.select').on('select2-selecting removed', function(evt) {
    var value = evt.val; //do something with this
});

在 v3.4.3 检查。

于 2017-03-16T13:52:33.507 回答