Четыре варианта для вас:
Вариант 0
Go чтения Sean Hogan's answer, он отметил, что это может быть сделано с делегацией, и я поставил вместе пример (Doh!) реализация.
Вариант 1
Вы можете сделать href
ссылок «#», пока не будет загружена Jquery, а затем (при необходимости) изменить его на то, что это на самом деле должно быть. Вы можете сохранить то, что href
должно быть в атрибуте data-
, например .:
<a href='javascript:;' data-href='realtarget.html'>blah</a>
Тогда:
jQuery(function($) {
$("a[data-href]").each(function() {
var $this = $(this);
$this.attr("href", $this.attr("data-href"));
});
});
Опять же, что последний бит, только если вам действительно нужно сделать HREF в HREF. Если вы обрабатываете клик по JavaScript, не нужно.
Если валидация является важной частью цикла разработки, важно отметить, что атрибуты в форме data-xyz
являются недействительными в HTML4 и ранее (браузеры действительно не заботятся, но опять же, если вы используете валидацию ...) , Они становятся действительными с HTML5.
Вариант 2
Использование встроенных onclick
атрибуты для перехвата нажмите перед JQuery загрузки и в основном «К сожалению, один момент». Таким образом, в script
тег в верхней вашего файла:
function sorryLoading() {
alert("Sorry, the page is still loading, one moment please.");
return false;
}
... а затем по ссылкам:
<a href='realtarget.html' class='sorry' onclick='return sorryLoading();'>blah</a>
... затем удалить onclick
при загрузке JQuery:
jQuery(function($) {
$("a.sorry").removeClass('sorry').attr("onclick", "").click(yourRealClickHandler);
});
(Вы можете оставить последний бит — click
вызов —, если они не все имеют один и тот же обработчик щелчка.)
Я использовал класс выше, чтобы различать эти ссылки и другие, которые, возможно, имеют встроенный onclick
(в противном случае, удивительно селектор «а [OnClick ] «фактически работает в Chrome, Opera и Firefox для Linux и IE6 и IE8 в Windows).
Вариант 3
Поскольку это звучит, как вы хотите, чтобы страница быть нефункциональной до Jquery нагрузок, здесь другой подход:
- Убедитесь, что тег сценария JQuery находится в
head
(не внизу, где я обычно рекомендую поместить его).
- В самом низу вашей страницы, непосредственно перед закрытием тега
body
, подключите обработчики кликов без, обернув их в звонок jQuery.ready
(или любой из его ярлыков).
Причина заключается в следующем: # 1 будет гарантировать, что само по себе Jquery загружается до страницы визуализируемого и # 2 будет подключить обработчики как можно скорее. Google рекомендует использовать тег в конце страницы, подобный этому (вместо функции ready
или аналогичной) и говорит, что в этот момент элементы DOM будут готовы к обнаружению.
Отдельно, конечно, вы хотите, чтобы убедиться, что время, в течение которого ссылка не делать то, что ожидает пользователь абсолютно как можно короче делая все оптимизации материала загрузки страницы вы Можно. Нажав на ссылку и не имея ее, сделайте то, что похоже на то, что она делает плохой пользовательский интерфейс.
Вы можете попробовать подход UI. возможно, создать предварительный загрузчик. – sheeks06
Я обновил ответ Шона Хогана на примере. Он абсолютно прав, как это сделать. –