Четыре варианта для вас:
Вариант 0
Перейти читать Ответ Шона Хогана , он указал, что это можно сделать с делегированием( doh! ) и я собрал пример реализации.
Вариант 1
Вы можете сделать href
из ссылок "#msgstr "до тех пор, пока не будет загружен 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
в top вашего файла:
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
off, если у них не все имеют одинаковый обработчик кликов.)
Я использовал вышеупомянутый класс, чтобы различать эти ссылки и другие, которые могут иметь встроенный onclick
(в противном случае, к удивлению, селектор «a [onclick]» фактически работает в Chrome, Opera и Firefox для Linux и IE6и IE8 в Windows).
Опция 3
Поскольку кажется, что вы хотите, чтобы страница не работала до загрузки jQuery, вот другой подход:
- Убедитесь, что тег script для jQuery находится в разделе
head
вашей страницы (не внизу, где я обычно рекомендую его размещать). - В самом низувашей страницы, непосредственно перед закрытием тега
body
, подключите ваши обработчики кликов без , завернув их в jQuery.ready
call (или любой из его ярлыков).
Причина в следующем: # 1 обеспечит загрузку самого jQuery до отображения страницы, а # 2 подключит обработчики как можно скорее .Google рекомендует использовать такой тег в конце страницы (вместо функции ready
или аналогичной) и говорит, что в этот момент элементы DOM будут готовы к обнаружению.
Отдельно, конечно, вы хотите, чтобы время, в течение которого ссылки не выполняли то, чего ожидает пользователь, было абсолютно максимально коротким , выполняя все возможные действия по оптимизации загрузки страницы.Нажатие на ссылку и ее отсутствие делает то, что выглядит, как это делает для плохого пользовательского опыта.