2013-07-24 4 views
1

У меня есть список выбора html, который заполняется через jquery. Прямо сейчас у меня есть событие изменения, так что, когда я меняю параметр, карта переориентируется на POI. Я пытаюсь заставить его работать так, что, когда я нажимаю на тот же параметр, карта рассматривает его как событие изменения. Параметры не поддерживают события кликов, и добавление события клика в списке выбора также не работает, поскольку есть два события щелчка.Выбор такой же опции в списке выбора

Таким образом, .change() не запускается, если вы щелкните тот же параметр.

Есть ли способ сделать эту работу, изменение тега опции или другое событие, о котором я, возможно, и не подозреваю?

Спасибо!

+1

может у сделать скрипку ?? –

+0

Показать код! постскриптум вы можете использовать события '.change()' для выбранного списка – Novocaine

+0

Да, я знаю, что могу использовать .change(), но .change() не запускается, если вы нажмете ту же опцию – Nixon

ответ

2

Пытаться сделать что-то вроде этого:

$('select').on({ 
    change: function(e) { 
     alert('change') 
     $(this).data('change', true); 
    }, 
    click: function() { 
     if (!$(this).data('change')) { 
      $(this).trigger('change'); 
     } 
     $(this).data('change', false); 
    } 
}); 

http://jsfiddle.net/WFmpW/1/

Таким образом, идея заключается в триггере изменить событие на клик, только если предыдущая опция не изменилась. Для этого мы можем установить некоторый флаг, как я сделал с data-change.

Правильный ответ:

Я просто отредактировать этот ответ, так что я могу принять это как правильный ответ, видя, как идея является правильным, но реализация не является. Правильный способ - вынуть событие .change. Ссылка на правильный код: http://jsfiddle.net/qcJwm/1/.

Код:

$('select').click(function() { 
    if ($(this).data('click')) { 
     doStuff(); 
     $(this).data('click', false); 
    } else { 
     $(this).data('click', true); 
    } 
}); 

var doStuff = function() { 
    alert('stuff'); 
} 
+0

Это близко, но после 2 кликов , он пропускает клики друг друга из-за того, как он настроен. Однако идея правильная. – Nixon

0

Вы можете добавить первый вариант без значения. При изменении вы меняете значение первого параметра на значение выбранного параметра и выполняете свой «тестовый код».

Поскольку вы хотите, чтобы иметь возможность изменить его снова, вы должны сделать первый вариант, выбранный с помощью $('item')[0].selectedIndex=0. Пользователь не будет уведомлять пользователя, поскольку он имеет такое же значение. Из-за этого, ваш пользователь может изменить его снова к выбору они только что выбрали, чтобы сложить его обратно

Смежные вопросы