Прежде всего - $("#clickme")
найдет id = "clickme", а не class = "clickme". Вы бы хотели $(".clickme")
, если вы искали классы.
Я (стараюсь) никогда не помещать какой-либо фактический код JavaScript в мои документы XHTML, если я не работаю над быстрым тестированием чего-либо на странице. Я всегда ссылаюсь на внешний файл JS, чтобы загрузить нужные мне функции. Браузеры без JS (например, веб-сканеры) не будут загружать эти файлы, и это делает ваш код намного более чистым по сравнению с «источником просмотра».
Если мне нужно немного функциональности только на одной странице - иногда он получает свой собственный включаемый файл. Все зависит от того, сколько функций / медленных селекторов он использует. То, что вы поместили свой JS во внешний файл JS, не означает, что вам нужно включать его на каждую страницу.
Основная причина, по которой я пользуюсь этой практикой - если мне нужно изменить какой-то код JavaScript, он будет все в одном месте и изменит весь сайт.
Что касается вопроса о производительности, то некоторые селекторы занимают много времени, но большинство из них (особенно те, которые имеют дело с ID) очень быстрые. Поиск селектора, который не существует, является пустой тратой времени, но когда вы сравниваете его с потраченным впустую временем второго HTTP-запроса сценария (который, кстати, блокирует DOM от готовности), поиск пустого селектора обычно побеждает как меньшее из двух зол. jQuery 1.3 Performace Notes и SlickSpeed , мы надеемся, помогут вам решить, сколько MS вы действительно теряете при поиске класса.