семантично правилен jQuery тригер

Когато разработвам с jQuery, често използвам href='/bg#' id='myTrigger' като тригер за събитие, в което комбинирам с return false, за да спра действителното му използване като хипервръзка. Всеки път, когато съм публикувал код тук преди, съм бил линчуван от някои от по-опитните хора за използване на хипервръзка като тригер. Трябва ли да използвам input type="button", или просто да дам идентификатор на всеки елемент и да го използвам като тригер?

Коя е най-добрата практика за задействания на jQuery?


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


Отговори (3)


Това зависи от това какво правите и какво е поведението по подразбиране на елемента.

Ако например заменяте поведението по подразбиране на връзка, като отваряте страницата в изскачащ прозорец, има смисъл да използвате връзка. Търсачките все още ще виждат връзката и тя ще се влоши елегантно за онези малцина, които са деактивирали клиентския скрипт.

Ако вие, от друга страна, използвате събитие за нещо, което е напълно различно от навигацията, за която бихте използвали връзка, по-скоро трябва да използвате различен елемент.

За да спрете поведението по подразбиране на връзка, можете да използвате метода preventDefault. Пример:

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

Имайте предвид, че няма изискване да използвате идентификатор за насочване към елемента, където искате да хванете събитието. ID е ефективен начин за насочване към елементи, но всеки метод за насочване към елемента е валиден. Пример:

<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, бутон и т.н. - Вече почти не използвам изпращане, винаги се използва бутон, както по-горе. Просто използвайте най-доброто в момента...

person Hogsmill    schedule 18.01.2011

Трябва да използвате всичко, което е подходящо в ситуацията. Не добавяйте хипервръзка, просто добавете събитие за щракване към всеки елемент, който вече е там. ако е <p>, тогава добавете събитието за щракване към <p>, ако е <img>, тогава го добавете към това.

person Tom B    schedule 18.01.2011