Как лучше связать код с событиями в jQuery? - PullRequest
2 голосов
/ 05 мая 2010

Предположим, у меня есть элемент <select> на моей HTML-странице, и я хочу запустить Javascript при изменении выбора.Я использую JQuery.У меня есть два способа связать код с элементом.

Метод 1: jQuery .change ()

<select id='the_select'>
<option value='opt1'>One</option>
<option value='opt2'>Two</option>
</select>

<script>
$('#the_select').change(function() {
  alert('Changed!');
});
</script>

Метод 2: атрибут onChange

<select id='the_select' onchange='selectChanged();'>
<option value='opt1'>One</option>
<option value='opt2'>Two</option>
</select>

<script>
function selectChanged() {
  alert('Changed!');
}
</script>

Iздесь следует понимать различную модульность: например, метод 1 хранит ссылки на код вне HTML, но метод 2 не должен упоминать идентификаторы HTML в коде.

Чего я не понимаю, так это: есть ли различия между этими двумя операциями, которые заставили бы меня предпочесть одно другому?Например, существуют ли браузеры с граничным регистром, где один из этих работает, а другой нет?Интеграция с jQuery лучше для обоих?Имеет ли поздняя привязка кода к событию разницу в поведении страницы?

Что вы выбираете и почему?

Ответы [ 3 ]

1 голос
/ 05 мая 2010

Ну, прочитайте о

ненавязчивый javascript

1 голос
/ 05 мая 2010

Преимущество метода 1 состоит в том, что привязка события не нарушает любой другой JavaScript, который, возможно, уже связал некоторый код с элементом. При использовании метода 2, если другой код уже связывает событие изменения, вам придется изменить свой HTML-код.

0 голосов
/ 05 мая 2010

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

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

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

Также с точки зрения машин, таких как программы чтения с экрана или любого устройства, у которого нет JS, имеющего атрибуты обработки событий, в основном вы заполняете страницу бессмысленно, что увеличивает размер страницы.

...