我想检测下拉是否扩大。我不想使用额外的事件处理程序进行点击/鼠标悬停等因为下拉菜单是动态的,并且由于其他原因我不能使用像jQuery live这样的东西。基本上我想要一些可以赋予任意select
元素(没有其他附加事件处理程序,类等)的东西,可以给出关于它是否被扩展的真/假答案。
对于我的特定应用程序,我正在处理鼠标滚轮事件,但是当打开下拉菜单时会不想处理它们(这将覆盖浏览器默认功能)。但是,当鼠标悬停在select
上但尚未打开它时,我仍然想要处理鼠标滚轮事件。
答案 0 :(得分:6)
我之前看过这个,出于类似的原因。除了尝试手动跟踪它之外我永远找不到解决方案,这实际上是行不通的。有几种方法可以打开/关闭选择(下拉),例如Alt + Dn Arrow。如果用户点击浏览器外部的内容,则会关闭打开的选择。试图跟踪选择的状态是徒劳的。除非有其他人带来我在追捕时遗漏的东西,否则你必须尽可能优雅地编写它。
答案 1 :(得分:4)
即使它没有扩展,它何时聚焦?您特别要求扩展,因为您不想覆盖默认浏览器行为,但浏览器行为应该是在项目聚焦时滚动项目,即使它没有扩展,所以我会说你会成为更好地检测焦点。
如果您对此感到满意,那么您可以通过使用JQuery focus()
和blur()
方法或{{1}来轻松检测字段何时具有焦点以及何时丢失它}和focusin()
。
http://api.jquery.com/focus/和http://api.jquery.com/blur/
http://api.jquery.com/focusin/和http://api.jquery.com/focusout/
希望有所帮助。
答案 2 :(得分:0)
也许你可以这样做:
$('#dropdown').live('click', function(){
//bind mousewheel here
});
$('#dropdown').live('change', function(){
//unbind mousewheel here
})