Используйте href тега ссылки (<a>) для определения операции - PullRequest
3 голосов
/ 16 июня 2011

Я ввожу тег в качестве кнопки и использую его вместо тегов <button> или <input submit>.

Для идентификации операции я использую атрибут href, например:

<a href='update'>Update</a>
<a href='delete'>Delete</a>

и затем с помощью jQuery: $ ('a [href = "update"]'). click (function () {...});

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

Теперь вопрос - поисковые системы накажут меня за то, что я слепойссылки?(Я так думаю).
Как мне обойтись?использовать #update вместо этого?Я не могу использовать атрибут id, поскольку может быть несколько кнопок, выполняющих одну и ту же операцию.

Примечание. Обработчик щелчков можно связать с помощью класса, что довольно удобно.Поэтому я бы не стал использовать id для привязки нескольких кнопок к одному и тому же обработчику.

<!-- inside a form -->
<a href='update' class='submit-button'>Update</a>

<!-- inside $(function() { .. });
$('a.submit-button').click(function() {
    // 1. get href of the clicked link : href = $(this).attr('href');
    // 2. add <input hidden> to the form: <input type='hidden' name='operation' value='<href>'/>
    // 3. submit form : $(this).parents('form').submit();
});

Ответы [ 4 ]

5 голосов
/ 16 июня 2011

Вы должны использовать "#update" или "#insert", но вместо этого вы должны использовать атрибут class, чтобы различать их.Можете ли вы иметь несколько классов для одного элемента, и, в отличие от атрибута ID, можно иметь несколько одинаковых классов по всему документу.

<a href="javascript:void(0);" class="update_buton submit_button">Update</a>

Затем вы сможете сделать это вместо этого:

$('.update_button').click(function(e)
{
  // Do something here
});

Если вам необходимо определить, какой тип кнопки submit_button был выбран, вы можете сделать это:

$('.submit_button').click(function(e)
{
  // Common code up here

  if ( $(this).hasClass('.update_button') )
  {
    // Update here
  }
  else if ( $(this).hasClass('.other_button') )
  {
    // Other action here
  }

  // More common code down here
});
2 голосов
/ 16 июня 2011

Почему бы просто не использовать другой атрибут и не усложнять жизнь?

<a href="#" data-action="update">Update</a>
<a href="#" data-action="delete">Delete</a>

Вы можете использовать все, что захотите, хотя data- соответствует стандартам HTML5. Но нестандартные теги в любом случае будут просто игнорироваться каждым браузером, нет иного недостатка, кроме неудачной проверки.

1 голос
/ 16 июня 2011

Не используйте атрибут href, если якорь не указывает на фактический ресурс.

Используйте атрибут id для определения операции:

<a id="delete-017" class="delete-button">Item No. 17</a>

КстатиВот как это делает переполнение стека ... (кнопки "ссылка", "флаг", "удалить", "редактировать")

0 голосов
/ 16 июня 2011

Я сомневаюсь, что вы будете оштрафованы за использование href = "#" или href = "# update" или скрытых ссылок.

Мое понимание SEO состоит в том, что сканер будет сканировать ресурс или нет. Затем он вычисляет относительность просканированного / кэшированного контента с ключевыми словами поиска.

Сколько контента для поиска вы действительно будете иметь на страницах форм? Хотели бы вы, чтобы сканеры проиндексировали этот контент? Я бы сказал, что у вас, вероятно, нет большого количества контента для поиска в формах, и вы все равно не хотите сканировать эти страницы.

Что касается разметки вашего кода, чтобы вы могли найти его с помощью jquery, я полагаю, что у Франсуа Дешена есть лучший ответ.

Используйте css для ловушек jquery, используйте href для того, что это ... указатель на ресурс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...