是否有解决方法在IE中触发option.click事件?

我使用下拉列表允许用户对搜索结果进行排序。 这些结果存在于表中,但并非所有可排序条件都由列表示。 可以通过单击列标题或使用“排序依据”下拉列表对列进行排序。 用户可以通过单击已排序的列标题来反转排序。 我试图在下拉列表中复制此function,但无法让它在IE7 / IE8中工作。

以下是适用于IE和Firefox的现有代码。 它会更改已排序的列,但不会更改排序方向。

$("#sortSelect").change(function() { //change sort }); 

这就是我想要改变它,它在Firefox中工作。 它会更改已排序的列,如果已选择已排序的列,则会更改排序方向。

 $("#sortSelect option").click(function() { //change sort }); 

我希望有人知道触发option.click事件的方法或知道一个好的解决方法。

重申TJ Crowder在评论中所说的内容,这是对用户界面进行的一个尴尬的改变。 话虽如此, 如果select没有设置multiple属性 ,则可以区分单击select元素和单击option元素。 在Internet Explorer中尝试以下代码:

 $(document).ready(function () { $("#sortSelect").click(function (event) { if (event.offsetY > this.offsetHeight) $(this.options[this.selectedIndex]).click(); }); $("#sortSelect option").click(function (event) { alert('clicked option '+this.parentNode.selectedIndex); }); }); 

它的工作原理是因为当您单击选项元素时,click事件将触发select元素。 通过检测您是否在select元素检查event.offsetY > this.offsetHeight的边界外单击,您可以使用jQuery触发当前所选选项元素的click事件。