我使用的是Select2 4.0并希望能够在用户点击当前选中的选项时进行处理,但是Select2似乎没有公开select2:selecting
或select2:select
个事件关于这个选项。
在下面的代码段中,我添加了select2:open
,select2:selecting
,select2:close
和select2:select
事件的日志记录:
$(function() {
$('select').select2({ placeholder: '' });
$('select').on('select2:open', function(elem) {
$('<li>').text('Open').appendTo('ol');
});
$('select').on('select2:selecting', function(elem) {
$('<li>').text('Selecting...').appendTo('ol');
});
$('select').on('select2:close', function(elem) {
$('<li>').text('Close').appendTo('ol');
});
$('select').on('select2:select', function(elem) {
$('<li>').text('Selected "' + elem.target.value + '"').appendTo('ol');
});
});
&#13;
select {
width: 256px;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.1/js/select2.min.js" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.1/css/select2.min.css">
<select>
<option></option>
<option value="Foo">Foo</option>
<option value="Bar">Bar</option>
</select>
<ol></ol>
&#13;
如果我们选择&#34; Foo&#34;,然后选择&#34; Bar&#34;,然后选择&#34; Bar&#34;再次,我们将获得以下输出:
选择&#34; Bar&#34;第二次(虽然它已被选中),select2:selecting
和select2:select
事件未公开。否则这些事件将落在第10和第12位,将select2:close
事件移至第11位。
我对select2:selecting
不感兴趣,但有什么方法可以在用户点击已经选出的选项时触发select2:select
事件?