семантически правильный триггер jQuery

При разработке с помощью jQuery я часто использую href='#' id='myTrigger' в качестве триггера для события, в котором я комбинирую с return false, чтобы предотвратить его фактическое использование в качестве гиперссылки. Всякий раз, когда я размещал код здесь раньше, некоторые из более опытных людей линчевали меня за использование гиперссылки в качестве триггера. Должен ли я использовать тип ввода = «кнопка» или просто дать любому элементу идентификатор и использовать его в качестве триггера?

Как лучше всего использовать триггеры jQuery?


person benhowdle89    schedule 18.01.2011    source источник


Ответы (3)


Это зависит от того, что вы делаете, и каково поведение элемента по умолчанию.

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

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

Чтобы остановить поведение ссылки по умолчанию, вы можете использовать метод preventDefault. Пример:

$('a#info').click(function(e){
  alert('info');
  e.preventDefault();
});

Обратите внимание, что нет необходимости использовать идентификатор для нацеливания на элемент, в котором вы хотите перехватить событие. Идентификатор — это эффективный способ нацеливания на элементы, но допустим любой способ нацеливания на элемент. Пример:

<div class="button">Eat me</div>

$('.button').click(function(){ alert('Eaten.'); });
person Guffa    schedule 18.01.2011

Обычно я делаю что-то вроде:

<div id=myTrigger'>Click Me</div>

с участием:

$('#myTrigger').click( function() { /* do stuff */ })

... тогда вам не нужен return false, чтобы остановить срабатывание href, с чем у меня были проблемы в прошлом; если вы щелкнете по нему до того, как JavaScript запустится, например, он все равно сработает. Этот способ также кажется мне "правильным", но есть и другие способы сделать это.

Конечно, вы можете использовать что угодно, чтобы предмет щелкнул; div, span, img, button и т. д. - я почти никогда больше не использую submit, всегда используется кнопка, как указано выше. Просто используйте то, что лучше на данный момент...

person Hogsmill    schedule 18.01.2011

Вы должны использовать то, что подходит в данной ситуации. Не добавляйте гиперссылку, просто добавьте событие клика к любому уже существующему элементу. если это <p>, то добавьте событие клика к <p>, если это <img>, то добавьте его к этому.

person Tom B    schedule 18.01.2011