JQuery Click против изменения

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

Теперь мой вопрос заключается в следующем: должен ли я всегда использовать обработчик изменений - или есть ситуации, когда щелчок по-прежнему будет уместен (предположим, мне нужна кросс-браузерная совместимость).

РЕДАКТИРОВАТЬ: Вот что я понял: для таких вещей, как поля выбора, изменение - это путь. Для простых вещей, таких как изображения, нет никаких изменений, поэтому щелчок — это путь.


person Dirk    schedule 27.07.2009    source источник


Ответы (2)


Клик не работает x-browser, IE не отвечает на выбор или выбор опции. Изменение — единственный доступный вариант.

person redsquare    schedule 27.07.2009
comment
Это неправильно. IE не запускает событие изменения, когда ожидается. Большинство браузеров запускают событие изменения в момент изменения значения элемента. Однако IE запускает событие изменения только тогда и только тогда, когда значение изменилось после того, как элемент потерял фокус. Поэтому для кросс-браузерного кодирования лучше использовать клики для выпадающих списков и keyup для текстовых полей для действительно отзывчивых приложений. В противном случае вашим пользователям придется щелкнуть элемент или выбрать табуляцию, чтобы обработка вашего события происходила в лучшем браузере, известном человеку. - person illvm; 27.07.2009
comment
@illvm - это именно то, что я пытался написать; пришлось столкнуться с этим некоторое время назад. - person montrealist; 27.07.2009
comment
@illvm. Какой мусор. События щелчка опции не могут быть связаны, т.е. Поэтому у вас есть щелчок выбора, который сообщает вам, когда пользователь собирается выбрать параметр. Какая от этого польза? - person redsquare; 27.07.2009
comment
@illvm - я не знаю ни одной реализации, в которой использовалось бы событие select click. Можете ли вы показать мне один. - person redsquare; 27.07.2009
comment
Хм... это интересная дискуссия, так что я отложу ее еще немного. - person Dirk; 27.07.2009
comment
Что произойдет, если пользователь использует стрелки клавиатуры для выбора. Что делать с «кликом»? - person redsquare; 27.07.2009
comment
Кроме того, щелчок не работает в Safari..... подробнее stackoverflow.com/questions/472259/ - person redsquare; 27.07.2009
comment
@redsquare, прежде чем распространять дезинформацию, попробуйте хотя бы подкрепить ее фактической информацией. Вот некоторый полезный код, который действительно работает в IE, который перехватывает событие щелчка выбранного элемента и извлекает его значение, текст, а также выполняет некоторые другие полезные задачи пользовательского интерфейса. $('saved_widget_select').observe('click', function(){ var that = $('saved_widget_select'); $('save_name').value = that[that.selectedIndex].text; $('saved_widget_id' ).value = that.value;$('savesavebox').removeClassName('buttonDisabled'); }); - person illvm; 27.07.2009
comment
Но он срабатывает, когда вы щелкаете элемент для начала. Какой смысл в том, что и в сафари не срабатывает. Опять же, зачем мне это - person redsquare; 27.07.2009
comment
его нельзя считать решением для x-браузера. Поэтому .change — единственный вариант. - person redsquare; 27.07.2009
comment
В зависимости от того, насколько отзывчивым вы хотите, чтобы приложение было и сколько кода вы хотите поддерживать, вы можете условно перехватывать события в зависимости от браузера. Я действительно не знаю, как имитировать, когда событие сработает вручную, поэтому, возможно, в браузерах, отличных от IE, изменение крючка и щелчок крючка в IE. - person illvm; 27.07.2009
comment
почему, когда я могу просто использовать .change.... Нет смысла использовать нестандартное событие, когда у вас есть такое, которое работает во всех браузерах. Изменение работает независимо от того, запущено ли оно после размытия или нет. - person redsquare; 27.07.2009
comment
обнаружение браузера, которое вы предлагаете, как раз для этого. Зачем мучиться, когда .change уже готов и ждет, чтобы его использовали! - person redsquare; 27.07.2009
comment
А как насчет обработчика изображения? Должен ли я использовать Изменить вместо щелчка и тогда? (простой случай) - person Dirk; 27.07.2009
comment
@redquare Потому что изменение не срабатывает в нужное время для 40-50% глобальной пользовательской базы ... - person illvm; 27.07.2009
comment
Вы можете возразить, что ie на самом деле правильна в своей реализации. Пользователь не подтверждает изменение, пока не покинет поле. Вы не платите за товар в магазине, когда берете его с полки. На самом деле вы не несете ответственности, пока не покинете магазин. - person redsquare; 27.07.2009
comment
Майкл, изображения не имеют изменения. У них есть щелчок и нагрузка. Но загрузка прерывается, т.е. после загрузки первого изображения. Однако это работает, если вы создаете новое изображение в js. - person redsquare; 27.07.2009
comment
@redsquare Это не событие покупки, это событие изменения. Состояние объекта изменилось, поэтому должно сработать событие изменения. Если я изменю параметр в списке выбора и сразу после этого проверю его значение, его значение будет отличаться от того, что было раньше. Событие должно было запуститься тогда. - person illvm; 27.07.2009
comment
Итак, вы хотите, чтобы событие изменения срабатывало даже при прокрутке списка на клавиатуре. Я не изменился на тот момент. Я просто прокручиваю доступные варианты. В конечном итоге вы получите беспорядок кода клиентского сайта, который пойдет по предложенному вами маршруту. Я все еще жду один пример сайта, который использует выбор щелчка.... - person redsquare; 27.07.2009
comment
@illvm правильно, событие click будет запущено на select, хотя и не всегда в разных браузерах: and-ie-to-click-event-on-selec" title="почему firefox реагирует иначе, чем webkit, и т.е. на событие щелчка на selec"> stackoverflow.com/questions/10119793/ И на redsquare есть на самом деле является вариантом использования click на select: вызывать function() каждый раз, когда выбирается параметр, даже если это один и тот же параметр, change не может этого сделать. Единственный способ, который я нашел для этого варианта использования, - это создать поддельный select с использованием некоторой библиотеки, такой как пользовательский интерфейс jQuery, и вызвать click на этих поддельных элементах option. - person K Z; 16.04.2012

Когда дело доходит до элементов управления формы, таких как ввод текста, поля выбора, флажки и радиокнопки, вам следует использовать событие onChange. Когда дело доходит до других вещей, таких как ссылки, списки, контейнеры и т. д., вам определенно следует использовать щелчок, поскольку эти элементы не поддерживают событие onChange.

person PatrikAkerstrand    schedule 27.07.2009