代码之家  ›  专栏  ›  技术社区  ›  Shaun Humphries

在IE中是否有触发选项单击事件的解决方法?

  •  1
  • Shaun Humphries  · 技术社区  · 14 年前

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

    下面是在ie和firefox中都有效的现有代码。它更改排序列,但不更改排序方向。

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

    这正是我试图改变它,它在火狐工作。它将更改排序列,如果已选择排序列,则将更改排序方向。

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

    我希望有人知道触发该选项的方法。单击事件或知道一个好的解决方法。

    1 回复  |  直到 14 年前
        1
  •  0
  •   Andy E    14 年前

    为了重申T.J.Crowder在评论中所说的话,这是你对用户界面所做的一个尴尬的改变。也就是说,可以区分点击 select 元素并单击 option 要素 如果select没有 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);
      });
    });
    

    它之所以起作用,是因为当您单击一个option元素时,click事件会触发select元素。通过检测您已在select元素检查的范围之外单击 event.offsetY > this.offsetHeight ,可以使用jquery触发当前选定选项元素的click事件。