<p>выбрано: открыть не работает</p>

Созданный на 22 дек. 2013  ·  5Комментарии  ·  Источник: harvesthq/chosen

Я пытаюсь открыть выбор после нажатия кнопки, но это не работает. Если я вставляю и предупреждаю() после триггера, он открывается...
(Используя выбранную версию 1.0 с jquery)

пример:

<select id="select">
    <option value="1">a</option>
    <option value="2">b</option>
    <option value="3">c</option>
</select>
<br>
<button onclick="$('#select').trigger('chosen:open'); ">Press this button to open (doesnt work) </button>
<button onclick="$('#select').trigger('chosen:open'); alert('ups!');">Press this button to open (work???)</button>

<script>
$(document).ready(function() {
$('#select').chosen();
});
</script>

пример в: http://jsfiddle.net/EArg6/28/

Самый полезный комментарий

Когда вы нажимаете кнопку, Chosen получает событие chosen:open . Однако событие продолжает всплывать в DOM, и Chosen немедленно обнаруживает щелчок по элементу, который не является активным Chosen... поэтому он закрывает его. Есть смысл?

Если вы работаете со встроенным JS, самое простое решение — использовать setTimeout для выхода из текущего стека событий:

onClick="setTimeout(function(){ $('#select').trigger('chosen:open'); }, 0)"

Однако вам почти наверняка не следует использовать встроенный JS. Вы по-прежнему можете использовать setTimeout если хотите, но достаточно просто остановить всплытие событий.

$('button').on("click", function(evt){
  evt.stopPropagation();
  $('#select').trigger('chosen:open');
});

Я обновил вашу скрипку с помощью этого рабочего кода: http://jsfiddle.net/EArg6/33/

Все 5 Комментарий

Ни одна кнопка не работает для меня в вашей скрипке (в Safari).

Какой браузер/версию вы используете?

Я тестировал это с помощью:

  • Фаерфокс 25.0.1
  • Опера 12.16
  • Хром 31.0.1650,63 м

первая кнопка не работает
Вторая кнопка открывает список параметров (закрывается только при закрытии окна «предупреждение»).

Когда вы нажимаете кнопку, Chosen получает событие chosen:open . Однако событие продолжает всплывать в DOM, и Chosen немедленно обнаруживает щелчок по элементу, который не является активным Chosen... поэтому он закрывает его. Есть смысл?

Если вы работаете со встроенным JS, самое простое решение — использовать setTimeout для выхода из текущего стека событий:

onClick="setTimeout(function(){ $('#select').trigger('chosen:open'); }, 0)"

Однако вам почти наверняка не следует использовать встроенный JS. Вы по-прежнему можете использовать setTimeout если хотите, но достаточно просто остановить всплытие событий.

$('button').on("click", function(evt){
  evt.stopPropagation();
  $('#select').trigger('chosen:open');
});

Я обновил вашу скрипку с помощью этого рабочего кода: http://jsfiddle.net/EArg6/33/

спасибо @pfiller

Спасибо @pfiller , это решение и объяснение избавили меня от изжоги!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги