2010-04-01 55 views
1

我正在使用下拉菜单来允许用户对搜索结果进行排序。这些结果在一个表中,但并非所有可排序标准都以列表示。可以通过点击列标题或使用“排序依据”下拉列来对列进行排序。用户可以通过点击排序的列标题来反转排序。我试图在下拉列表中复制此功能,但无法使其在IE7/IE8中正常工作。在IE中触发option.click事件是否有解决方法?

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

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

这就是我想改变它,它在Firefox中的作品。它会更改已排序的列,并且如果已排序的列已被选中,它将更改排序方向。

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

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

+2

FWIW,作为用户,我想我会发现一个相当奇怪的用户界面。如果我正在查看一个下拉列表,如果我重新选择已经选择的选项,我不希望有任何改变。 – 2010-04-01 15:19:11

+0

是#sortSelect元素下拉样式或列表样式(即它是否具有大小属性​​)? – SBUJOLD 2010-04-01 15:28:22

+0

@ T.J。 Crowder - 我正在根据用户反馈进行更改。他们希望能够在不显示的列上反转排序。 – 2010-04-01 15:33:13

回答

0

重申T.J. 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来触发当前选定选项元素的点击事件。

+0

正是我在找的东西。我同意接口,并将考虑替代品。谢谢! – 2010-04-01 15:39:17

相关问题