Проверяя HTML-источник вопроса, я вижу, например:
<a id = "comments-link-xxxxx" class = "comments-link">add comment</a><noscript> JavaScript is needed to access comments.</noscript>
А затем в источнике javascript:
// Setup our click events..
$().ready(function() {
$("a[id^='comments-link-']").click(function() { comments.show($(this).attr("id").substr("comments-link-".length)); });
});
Кажется, что все события щелчка пользователя связаны таким образом.
Недостатки этого подхода очевидны для людей, просматривающих сайт без javascript, но каковы преимущества динамического добавления событий с помощью javascript по сравнению с их непосредственным объявлением?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Единственное преимущество, которое я вижу, - это уменьшение размера страницы и, следовательно, меньшая потребность в полосе пропускания.
Обновлено: поскольку меня голосуют против, позвольте мне более подробно объяснить мой ответ.
Я хочу сказать, что использование ссылки в качестве пустого якоря - это просто плохая практика, не более того! Конечно, отличное отделение JavaScript логика от HTML. Конечно, рефакторинг и отладка проще. Но здесь это противоречит главному принципу ненавязчивого JavaScript: Изящная деградация!
Хорошим решением было бы иметь возможность вызова комментариев: один через РЕАЛЬНУЮ ссылку, которая будет указывать на простую страницу, показывающую комментарий, а другая, которая возвращает только комментарии (в нотации JSON или аналогичном формате) с целью быть вызывается через AJAX для вставки прямо на главную страницу.
При этом метод, использующий метод AJAX, должен также позаботиться об отмене другого вызова, чтобы избежать перенаправления пользователя на простую страницу. Это был бы ненавязчивый JavaScript. Здесь просто JavaScript использует неправильно используемый тег привязки.
Таким образом, у вас может быть легкая страница, на которой вы можете обрабатывать все свои действия с помощью javascript. Вместо того, чтобы использовать множество различных URL-адресов и действий, встроенных в страницу, просто напишите одну функцию javascript, которая находит ссылку и подключает ее, независимо от того, где на странице вы сбрасываете эту ссылку «комментарий». Это избавляет грузы от повторения html :)
Что касается последнего пункта, представьте, что вы хотите добавить значок «показать комментарии» где-нибудь еще в шаблоне. Было бы очень легко привязать тот же обратный вызов к значку.
Присоединение событий через API событий, а не в разметке - это ядро ненавязчивого javascript. Приглашаем вас прочитать эта статья в Википедии, чтобы получить полный обзор того, почему ненавязчивый javascripting так важен.
Точно так же, как вы отделяете стили от разметки, вы хотите отделить скрипты от разметки, включая события.
Я бы сказал, что это скорее средство ненавязчивого JavaScript. Увы, Stack Overflow игнорирует реальное ядро ненавязчивого JavaScript, а именно создание веб-сайтов, которые работают для всех, независимо от того, доступен ли у них JavaScript или включен.
Вы технически правы, но я считаю, что дни обслуживания пользователей с отключенным javascript подходят к концу. Как и поддержка IE6, это еще одно наследие, сдерживающее Интернет.
Я считаю это одним из фундаментальных принципов хорошей разработки программного обеспечения:
Разделение презентации и логики.
HTML / CSS - это, по сути, язык представления. Javascript предназначен для создания логики. По возможности рекомендуется отделить любую логику от презентации.
Не уверен, почему за это вас голосуют против - ни один конечный пользователь не выиграет от того, что было сделано, поскольку, как вы упомянули, ссылки в любом случае совершенно бесполезны без JavaScript.