2010-11-16 3 views
2

Мне нравится, как jQuery обертывает события, когда вы используете свой метод bind. Однако неудобно настраивать привязки. Есть ли способ объединить легкость html (например, onKeyPress="foo(event)") с независимым от браузера jQuery знанием дел?Приложить обработчик события jquery с помощью html?

+0

До сих пор, похоже, что ответ «Нет» :) – JoelFan

+0

Это может быть в зависимости от вашего восприятия * легкости *. Поскольку jQuery (будучи javascript) полностью работает на стороне javascript, единственным доступом к HTML-стороне является мост, предоставляемый API DOM. И, конечно, мостом, который предоставляет HTML, является встроенный атрибут 'on [event]'. Таким образом, вы действительно смотрите на то или другое. – user113716

+0

@patrick, sux2bme – JoelFan

ответ

0

Хорошая идея состоит в том, чтобы фактически разделить эти два, чтобы ваш HTML был чистым, а js - в отдельном месте. Вы можете использовать ярлыки, такие как $('a').click(...) вместо $('a').bind('click'...), но это все. Лично мне нравится иметь привязки отдельно от разметки.

+0

. Ваш совет предполагает, что я хочу привязать каждый тег 'a' точно к тому же обработчику – JoelFan

+0

Это просто пример. – cambraca

+0

Я знаю, но моя точка нет общего шаблона – JoelFan

1

Вы имеете в виду вот это?

function foo(event) { 
    alert(event.target); 
} 

$('.someSelector').keypress(foo); 

ли в HTML или яваскрипта, как вам нужно создать функцию foo, поэтому, возможно, это ближе к тому, что вы искали.

Я не уверен, что именно вам кажется неудобным в отношении привязки обработчика jQuery.

+0

Что такое «someSelector», если элемент HTML не имеет класса или id? Разве не так неудобно объявлять элемент HTML, а затем возвращаться и каким-то образом находить его в DOM и присоединять обработчик событий в другом месте в файле, чем просто объявлять элемент и его обработчик событий на одном и том же время? – JoelFan

+0

@JoelFan - jQuery - это выбор из DOM, а затем выполнение манипуляций. Если для элемента (элементов) нет согласованного идентификатора, и вы не хотите добавлять его для выбора, тогда, я думаю, мне нужно будет спросить, что именно связано с обработчиком jQuery, которое вы * делаете *, например, и достаточно ли этого, чтобы убедить вас планировать свою разметку для размещения выбора DOM. Или я пропущу вашу мысль? – user113716

+0

Мне нравится независимая от браузера jQuery «обертка», которую она дает вам для обработчиков событий ... http: //api.jquery.com/category/events/event-object/ ... и я не соглашусь с тем, что jQuery все о выборе из DOM ... речь идет о независимом от браузера, более простом сценарии на стороне клиента ... наконец ... Я не «планирую» мою разметку ... Я исправляю существующую разметку, которая была разработана без jQuery – JoelFan

1

Возможно, вы не хотите этого делать.

Возможно, вы захотите прочитать на event delegation in JavaScript, который эти методы привязки jquery аккуратно обрабатывают вас.

Вот основные моменты:

делегация Событие имеет ряд преимуществ к производительности веб применения:

Меньшее функции для управления. Занимает нет памяти. Меньше связей между вашим кодом и DOM. Не нужно беспокоиться об удалении обработчиков событий, когда изменяет DOM через innerHTML.

Вы лучше с помощью связывания хелперы JQuery как $ whatever.click (Fn) и т.д.

Собственно here is another question on SO, который ссылается на ту же статью, я сделал это также может помочь.

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