jquery - блокирует определенные ссылки до полной загрузки страницы и связывает события кликов - PullRequest
4 голосов
/ 27 октября 2009

У меня есть модальный диалоговый плагин, написанный на jquery, который привязывается к событию click всех элементов определенного класса.

Модальное диалоговое окно "выбирает" страницу через AJAX, которая объявлена ​​в параметре 'href' элемента .

Все работает нормально, но - когда пользователь нажимает ссылку до того, как страница полностью загружена и готова (до того, как событие click привязано к элементу), - браузер переходит на страницу, объявленную в 'href' параметр.

Есть идеи, как предотвратить такое поведение? Идеальная ситуация - игнорировать нажатия на эти элементы до полной загрузки страницы. Производительность на стороне клиента имеет решающее значение.

Ответы [ 2 ]

3 голосов
/ 27 октября 2009

Если вам нужно избежать встроенных сценариев, то вы можете использовать метод live () jQuery для привязки обработчика событий для элементов, которые еще не добавлены в DOM:

1) Обязательно включите jQuery в <head>, а не в <body>, поскольку нам нужно инициировать следующий код до создания любых элементов в теле.

2) Включите следующее, также в <head> (например, как внешний файл js):

$("a").live("click", function(){// Use a more specific selector than "a" if poss.
  getAjax( // This is your Ajax function. Adapt as required.
      $(this).attr('href') // Pass in the <a>'s href attribute.
  );
  return false; // Cancel the default click handler, to prevent page redirect.
});
3 голосов
/ 27 октября 2009

Обычно вы избегаете прямого кодирования любого тега в теге. Вместо этого установите href = "javascript: void (0)" и обработайте отправку с помощью jQuery.

Сделайте что-то вроде этого:

<a onclick="SomeJQueryCall()" href="javascript:void(0)">Click Me!</a>

А вот скрипт jQuery:

function SomeJQueryCall() {
    //ask the web server for some AJAX xml
    $.get(SomeUrl, null, SomeCallBackFunction(), "xml");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...