Как правильно использовать javascript-ссылки для пользователей без js - PullRequest
0 голосов
/ 17 октября 2011

Я надеюсь, что я не создаю здесь дубликат, но я просто не знаю, что искать / пока не нашел ничего полезного.

На моей странице есть несколько ссылок (<a>), которые запускают обработчик jquery click (), который загружает новую страницу в div без перезагрузки. Чтобы сделать эти ссылки доступными для пользователей, не поддерживающих JavaScript, я хочу связать их с одной и той же страницей (поэтому я использую s, а не просто div / span / button). Проблема в том, что скрипт все равно будет перезагружен, так что вы можете сказать, что jaavascript перезаписан.

Так как мне запретить браузеру использовать ссылку в качестве ссылки с javascript? Или каково правильное решение, позволяющее пользователям, не поддерживающим JavaScript, также правильно использовать сайт?

Единственное решение, которое я мог придумать сам, - это просто использование кнопок, но я нахожу это довольно громоздким, поскольку мне приходится использовать форму, хотя я отправляю только одну переменную через GET, которая указана только в самой ссылке. Спасибо за помощь:)

Ответы [ 5 ]

2 голосов
/ 17 октября 2011

Если вы return false обработчик событий click, он не выполнит действие по умолчанию, которое в вашем случае будет переходить по ссылке на новую страницу ...

$('a').click(function(e) {
    // process your event...
    return false;
});

Затем, если JavaScript отключен, он будет следовать за тегом <a> до нового href, как и ожидалось.

1 голос
/ 17 октября 2011

jQuery предлагает несколько способов решения этой проблемы.

$('.some-link').click(function(event) {
   //just prevent browsers default behavior
   event.preventDefault();
   //stop calling all other handlers, including live
   event.stopPropagation();
   //stop calling all handlers listening to the same dom node
   event.stopImmediatePropagation()

   //do all of the above
   return false;
)}

Надеюсь, это поможет.

1 голос
/ 17 октября 2011

Для того, что вы делаете, возвращение false будет работать так, как ответили другие, но остерегайтесь чрезмерного использования return false; в обработчиках событий jQuery.

Возможно, вам лучше будет позвонить по номеру preventDefault(), чтобы остановить только действие щелчка.Это предотвратит переход по ссылке, но не остановит любые другие обработчики, которые могут быть присоединены.См. События jQuery: прекратите неправильное использование, верните false для подробного объяснения.

пример:

$("a").click(function(event) {
    // your custom code
    event.preventDefault();
});
1 голос
/ 17 октября 2011

Поскольку вы говорите, что используете jQuery, верните false в обработчик событий.

$("a").click(function() {
    // ...
    return false;
});
0 голосов
/ 17 октября 2011
$( "a" ).click( function() {
    // ...
    return false;
});

Это предотвратит событие (т. Е. Щелчок) от изменения страницы, но также не позволит вам использовать методы цепочки. Метод цепочки выглядит так:

$( "a" ).click( function(){} ).css( 'color', 'red' );

Клик будет отменен, но css ТАКЖЕ не будет выполнен.

Использование .preventDefault () довольно стандартно и не вызывает этой проблемы.

$( "a" ).click( function( event ) {
    // ...
    event.preventDefault();
});
...