繁体   English   中英

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

[英]Is there a workaround to trigger an option.click event in IE?

我正在使用一个下拉列表,以允许用户对搜索结果进行排序。 这些结果在表中,但并非所有可排序标准都由列表示。 可以通过单击列标题或使用“排序依据”下拉列表对列进行排序。 用户可以通过单击已排序的列标题来反转排序。 我正在尝试在下拉菜单中复制此功能,但无法使其在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);
  });
});

之所以起作用,是因为当您单击选项元素时,单击事件会在选择元素上触发。 通过检测到您单击了select元素的边界,并检查event.offsetY > this.offsetHeight ,可以使用jQuery触发当前选择的option元素的click事件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM