Событие двойного щелчка по опции списка не запускается в IE - PullRequest
6 голосов
/ 01 марта 2011

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

У меня есть этот код:

$('#' + opts.leftListId + ' > option').live('dblclick', function () {
     // Move the object
});

Прекрасно работает в Firefox, но в IE событие вообще не запускается. Я не могу использовать двойной щелчок на узле выбора, потому что мне нужно переместить только тот, на котором был нажат. Есть идеи?

Ответы [ 3 ]

7 голосов
/ 22 июня 2011

Doubleclick не сработает, т. Е. Если вы попытаетесь добавить их в элементы option, независимо от того, как вы его добавите.Единственное, что у меня работает в IE, - это добавить наблюдение за событиями к самому выделенному элементу, а затем просмотреть выбранные элементы:

$("select").dblclick(function () {
  $("select option:selected").each(function () {
    alert(this);
  });
});    
6 голосов
/ 01 марта 2011

Попробуйте вместо этого:

$('#' + opts.leftListId).find('option').each(function(){
  $(this).live('dblclick', function () {
     // Move the object
  });
});

Обновление (10:21 по Гринвичу)

Попробуйте вывести в прямом эфире:

$('#' + opts.leftListId).find('option').each(function(){
  $(this).dblclick( function () {
     // Move the object
  });
});

См. Этот пример - http://jsfiddle.net/hr7Gd/

Обновление (10:45 по Гринвичу)

Другой вариант - запуститьdblclick() на select (который работает!) и опция get vale of wich были выбраны и работают с этим:

$("select").dblclick(function () {
  var str = "";
  $("select option:selected").each(function () {
    str += $(this).text() + " ";
  });
  $("span").text(str);
})
.trigger('change');

Смотрите этот пример, работающий здесь - http://jsfiddle.net/hr7Gd/1/

3 голосов
/ 01 марта 2011

Понял - я ошибся, подумав, что не могу использовать событие двойного щелчка для выбора.

Это рабочий код:

$('#' + opts.leftListId).dblclick(function () {
      // Move selected options: $('#' + opts.leftListId + ' :selected')
});

Причина, по которой я не думал, что этосработало бы то, что я думал, что он будет перемещаться по всем выбранным элементам, а не только по нажатию.Однако, по-видимому, при первом щелчке по двойному щелчку выбирается только один элемент, прежде чем это событие сработает при двойном щелчке и переместит его.

...