我猜你只是绑定你的监听器太晚了(如果你在选择准备好之后绑定它,它不会看到事件)。 在应用 selected 之前尝试绑定侦听器
啊,那是解决方案的一部分。 在设置它之前,还有一条线将所有事件从选择中解除绑定,从而将其删除。 我相信由于 asp.net 和回发的怪异而添加了 unbind 行。
感谢您的快速回复。
关闭。 :+1:
对不起,另一件事,我应该能够像下面这样在这个函数中获得选择的对象,对吗?
jQuery('.chzn-select').on(' selected :ready ', function (chosen) {
jQuery('li').ScrollText();
});
我正在寻找新元素并在准备好后对其进行处理。 选择的对象是否包含这个? 我看到 obj 有一个结果,但这始终是未定义的。
好的,我再次关闭它。
我发现这永远行不通。 因为我希望将事件应用于所选下拉列表中的每个选项,但问题是在单击下拉列表之前不会创建选项。 因此,我可以将我的代码移动到“ selected:showing_dropdown ”事件中。
事件侦听器的第一个参数始终是事件对象。 参数是第二个参数: http ://harvesthq.github.io/chosen/options.html#triggered -events
啊我错过了第二个参数。 谢谢。
您应该使用委托绑定您的事件(例如已弃用的$().live()
),因为绑定时元素不必出现在页面中:
$('.chosen-select').on('click', 'li', handlerFunction);
更多关于这里的事件委托: https ://learn.jquery.com/events/event-delegation/
我还遇到了一个问题,其中selected:ready没有触发。
这不起作用:
$('select')
.chosen()
.on('chosen:ready', function(){
console.log('chosen:ready')
});
但是在实例化 selected 之前绑定事件确实有效:
$('select')
.on('chosen:ready', function(){
console.log('chosen:ready')
})
.chosen();
事件正在触发。 但是在第一种情况下,您的侦听器可能是在触发后注册的
@stof很好的说明,谢谢。
只是想知道为什么列表项是在“showing_dropdown”事件而不是“ready”事件中创建的?
列表项不是在chosen:showing_dropdown
中创建的。
chosen:ready
在构建结果并且 Chosen 准备接收事件时触发, chosen:showing_dropdown
在打开 Chosen 后触发。
那么你想知道的是什么? ;)
在触发下拉菜单打开之前,我的“选择的结果”列表始终为空。 我找到了另一种做我正在做的事情的方法,但对它是如何工作的有点好奇。
最有用的评论
我还遇到了一个问题,其中selected:ready没有触发。
这不起作用:
但是在实例化 selected 之前绑定事件确实有效: