Как я могу улучшить этот интерфейс, похожий на jQuery Gmail?

РЕДАКТИРОВАТЬ 3: Я добился этого, проигнорировав приведенный ниже совет и прислушиваясь к окну, но только когда ввод , текстовое поле или текстовое поле не сфокусировано. Я не уверен, что это лучший способ решить эту проблему.

http://jsfiddle.net/gXPES/5/


РЕДАКТИРОВАТЬ 2: I ' Мы попытались решить проблему keydown , применив обработчики focus и blur к input s. Тогда я слушаю только события, когда var focus_on_input == true . Но, похоже, не все хорошо. Это предотвращает одно поведение, но вызывает другое, более странное поведение. Например, когда я вкладываю вне поля ввода, нажатие J и K приведет к переходу в начало или конец списка. Если я щелкну в другом месте и переключу фокус, эта проблема будет исправлена. Есть мысли?


РЕДАКТИРОВАТЬ: Благодаря помощи ответчика я ограничил селекторы при прослушивании keydown , так что я все еще могу вводить символы в другом месте, но у меня возникает новая проблема . Когда я нажимаю J или K , стрелка навигации перемещается в верхнюю или нижнюю часть списка задач. И когда я нажимаю C или # , он уведомляет меня, что задачи не выбраны. X функционирует должным образом и не выбирает задачу.


Размещение этого кода на JSFiddle , поскольку здесь нет возможности прокомментировать его полностью. Я опубликовал все свои JS, CSS и HTML, используемые для самого интерфейса.

Я разрабатываю пользовательский интерфейс в стиле Gmail для управления задачами с использованием jQuery на интерфейсе (и PHP на сервере, хотя это в значительной степени не имеет к этому отношения).

Я все еще относительно новичок в разработке jQuery и поэтому понимаю , что делаю ряд вещей неправильно . До сих пор я просто не видел не известно что именно я делаю неправильно, и как это исправить . Я надеялся, что еще несколько ученых душ могут помочь мне (и, надеюсь, другим) понять, как рефакторинг кода jQuery для приложения большего размера.

Для начала вот несколько вещей, которые я хотел бы знать, как делать лучше:

  1. Вызывайте этот код, только когда активен интерфейс задачи.

  2. Улучшите прослушивание события keydown . В настоящее время я слушаю J , K , X , Shift + 3 и C . Я также буду слушать E для редактирования задач, но еще не внес изменения. Проблема со слушателями связана с моей первой проблемой, которая заключается в том, что они всегда включены . Это означает, что нажатие J в , например, не приведет к поведению по умолчанию.

  3. Используйте меньше HTML в моем коде.

  4. Сделайте мой код вообще более СУХИЙ.

Любые мысли, какими бы критическими они ни были, более чем приветствуются. Опять же, я понимаю, что не следую лучшим практикам здесь, но это потому, что я к ним тупой. Я хочу учиться и надеюсь использовать эту возможность для этого.

Ура!

6
задан Josh Smith 9 November 2010 в 05:24
поделиться