【发布时间】:2015-10-11 17:02:09
【问题描述】:
当在<select> 控件中选择另一个<option> 时,可以使用<select> 触发的处理程序以非常直接的方式处理此事件。
但是由于某些原因,我的项目使用委派的<option>-triggered 处理程序会很方便。
我尝试使用不同的事件来触发和委托所需的处理程序。结果不理想:
-
onfocus、onchange和onkeyup处理程序仅在<select>控件上触发,而不在嵌套的<option>上触发。 -
onclick处理程序根据需要工作并被委派(在选定的<option>上触发)。但是,使用此处理程序显然没有意义,因为select控件中的另一个option也可以通过键盘选择,而不仅仅是通过鼠标选择。
我说的对吗?我是否错过了可以在案例中使用的任何标准 DOM 事件?或者我只需要使用一种 polyfill,比如 jQuery 的 focusin 和 focusout?
【问题讨论】:
-
选择框的实现在浏览器中非常不同,它们通常甚至不响应正常的 DOM 事件,而是浏览器内部“暮光区”的一部分。
-
顺便说一句,我现在用的是火狐。
标签: javascript handler html-select event-bubbling event-capturing