Есть ли обходной путь для запуска события option.click в IE? - PullRequest
1 голос
/ 01 апреля 2010

Я использую раскрывающийся список, чтобы позволить пользователю сортировать результаты поиска. Эти результаты представлены в таблице, но не все сортируемые критерии представлены столбцами. Столбцы можно отсортировать, щелкнув заголовок столбца или используя раскрывающийся список «Сортировать по». Пользователь может отменить сортировку, нажав на заголовок отсортированных столбцов. Я пытаюсь продублировать эту функцию в раскрывающемся списке, но не могу заставить ее работать в IE7 / IE8.

Ниже приведен существующий код, который работает как в IE, так и в Firefox. Изменяет отсортированный столбец, но не направление сортировки.

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

Это то, что я пытаюсь изменить, и это работает в Firefox. Он изменяет отсортированный столбец, и если отсортированные столбцы уже выбраны, он изменит направление сортировки.

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

Я надеялся, что кто-нибудь узнает, как вызвать событие option.click, или найдет хороший обходной путь.

1 Ответ

0 голосов
/ 01 апреля 2010

Еще раз повторить, что Т.Дж. Краудер сказал в комментариях, что это неудобное изменение, которое вы вносите в пользовательский интерфейс. При этом можно различить щелчок по элементу 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);
  });
});

Это работает, потому что когда вы нажимаете на элемент option, событие click срабатывает на элемент select. Обнаружив, что вы щелкнули за пределами элемента select, проверяя event.offsetY > this.offsetHeight, вы можете использовать jQuery для запуска события click выбранного в данный момент элемента option.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...