Гиперссылки jQuery - значение href?

На моем веб-сайте я использую jQuery для привязки событий элементов, а именно гиперссылок. Поскольку эти гиперссылки только выполняют действия на текущей странице и никуда не ведут, я помещаю атрибут href в "#" в:

<a href="#">My Link</a>

Однако в некоторых браузерах это приводит к тому, что страница прокручивается вправо, что явно нежелательно. Я пробовал использовать пустое значение href, или не включая его, но затем мышь не изменяется на курсор руки при наведении курсора.

Что мне там делать?

Ответ 1

$('a').click(function (event) 
{ 
     event.preventDefault(); 
     //here you can also do all sort of things 
});

Затем вы можете поместить все href все, что захотите, и jQuery вызовет метод preventDefault(), и вы не будете перенаправлены на это место.

Ответ 2

Те "привязки", которые существуют исключительно для обеспечения события клика, но на самом деле не ссылаются на другой контент, должны действительно быть элементами кнопки, потому что это то, чем они на самом деле являются.

Его можно создать так:

<button style="border:none; background:transparent; cursor: pointer;">Click me</button>

И, конечно, события щелчка могут быть прикреплены к кнопкам, не беспокоясь о переходе браузера в начало и без добавления постороннего javascript, например onclick = "return false;" или event.preventDefault().

Ответ 3

Вы действительно должны установить реальную ссылку. Я не хочу звучать как педант, но это довольно плохая привычка. JQuery и Ajax всегда должны быть последним, что вы реализуете. Если у вас есть ссылка, которая идет не туда, вы не делаете это правильно.

Я не разбиваю твои яйца, я имею в виду это со всеми наилучшими намерениями.

Ответ 4

Зачем использовать <a href>? Я решаю это следующим образом:

<span class='a'>fake link</span>

И создайте его с помощью:

.a {text-decoration:underline; cursor:pointer;}

Вы можете легко получить доступ к нему с помощью jQuery:

$(".a").click();

Ответ 5

Добавьте return false в конец обработчика кликов, это предотвратит появление обработчика по умолчанию браузера, который пытается перенаправить страницу:

$('a').click(function() {
// do stuff
return false;
});

Ответ 6

с помощью jquery, вы можете захотеть получить только те, у кого есть "#"

$('a[href=#]').click(function(){return false;});

если вы используете новейший jquery (1.3.x), нет необходимости связывать его снова при изменении страницы:

$('a[href=#]').live('click', function(){return false;});

Ответ 7

вы используете shoud <a href="javascript:void(0)" ></a> вместо <a href="#" ></a>

Ответ 8

Интересно, почему никто раньше этого не говорил: чтобы предотвратить <a href="#"> от прокрутки позиции документа до вершины, просто используйте <a href="#/">. Это просто HTML, не требуется JQuery. Использование event.preventDefault(); слишком велико!

Ответ 9

Я знаю, что это старый, но ничего себе, там такое легкое решение.

полностью удалить "href" и просто добавить класс, который выполняет следующие действия:

.no-href { cursor:pointer: }

И что это!

Ответ 10

Я почти имел эту проблему, и это было очень обманом. Я предоставляю ответ в случае, если кто-то завершается в том же положении.

  • Я думал, что у меня есть эта проблема.
  • Но я использовал return false и javascript: void (0);
  • Затем различие в проблеме продолжалось:
  • Я понял, что это не происходит ВСЕ, к началу - и моя проблемная зона была около нижней части страницы, поэтому этот прыжок был странным и раздражающим.
  • Я понял, что использовал fadeIn() [jQuery library], который на короткое время показывал мой контент: none
  • И затем мой контент расширил доступ к странице! Вызывает то, что выглядит как прыжок!
  • Использование скрытых переключателей видимости теперь.

Надеюсь, что это поможет человеку застрять с прыжками!!

Ответ 11

Вместо этого вы можете просто иметь href, как показано ниже:

<a href="javascript:;">My Link</a>

Он не будет прокручиваться вверх.

Ответ 12

<a href="#nogo">My Link</a>