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

时间:2010-04-01 15:07:50

标签: javascript jquery

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

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

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

我正在尝试将其更改为,并且它适用于Firefox。它会更改已排序的列,如果已选择已排序的列,则会更改排序方向。

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

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

1 个答案:

答案 0 :(得分:0)

重申T.J.克劳德在评论中说,这是你对用户界面所做的一个尴尬的改变。话虽如此,如果选择没有设置select属性,则可以区分点击option元素和点击multiple元素 。在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事件。