2009-09-04 1 views
8

Есть ли какой-либо метод для того же кода для функции щелчка двух разных элементов id в одной функции щелчка?Могу ли я закодировать одну и ту же функциональность для 2-х элементов в одном клике?

Например, у меня есть два элемента ссылок с идентификаторами, myFormsTabSubmitted и formStatusSubmitted. Обе ссылки имеют одинаковую функциональность. Когда я нажимаю обе эти ссылки, отображается один и тот же элемент div («представлен»), а другие divs скрыты.

Так что вместо того, чтобы писать две функции щелчка, одна для myFormsTabSubmitted и другая для formStatusSubmitted, могу ли я иметь одну функцию щелчка для обоих? Как

$('#myFormsTabSubmitted #formStatusSubmitted').click(function(){ 
      $('#allMyForms').hide(); 
      $('#draftedMyForms').hide(); 
      $('#submittedMyForms').show(); 
      $('#myFormsTab').find(".selected").removeClass(); 
      $('#myFormsTabSubmitted').addClass("selected"); 
     }); 
+0

Все ответы правильные ... Поэтому я не могу выбрать один ответ в качестве наилучшего ответа .. Спасибо всем .. – Angeline

ответ

17

Просто используйте разделитель запятая в селекторе:

$("#myFormsTabSubmitted, #formStatusSubmitted").click(function() { 
    // do stuff 
}); 
7

Конечно! Самое простое изменение кода было бы добавить запятую:

$('#myFormsTabSubmitted, #formStatusSubmitted').click(...); 

Вы также можете сохранить ссылку на ваш обработчик щелчка и добавить его в множественный выбор:

var myHandler = function() { ... }; 
$('#myFormsTabSubmitted').click(myHandler); 
$('#formStatusSubmitted').click(myHandler); 
1

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

function formSubmit() { 
         $('#allMyForms').hide(); 
         $('#draftedMyForms').hide(); 
         $('#submittedMyForms').show(); 
         $('#myFormsTab').find(".selected").removeClass(); 
         $('#myFormsTabSubmitted').addClass("selected"); 
} 

$('#myFormsTabSubmitted, #formStatusSubmitted').click(formSubmit); 

или

$('#myFormsTabSubmitted').click(formSubmit); 
$('#formStatusSubmitted').click(formSubmit); 

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

+1

Ваш синтаксис неверен. Вместо этого следует: $ ("# myFormsTabSubmitted, #formStatusSubtmitted"). Click (formSubmit); –

+0

Обновлен до '.click (formSubmit);' вместо '.click (formSubmit(););' – gnarf

+0

Спасибо gnarf. У меня возникли проблемы с поиском правильного пути для этого, что еще раз доказывает мою точку зрения. – Anthony

0

, когда jquery делает свой объект как $ ('# id'), его принимает строку, переданную в параметре $(), вычисляя, что строка jquery возвращает объект. И возврат этого объекта jQuery - это еще один объект jQuery, который выполняет все действия jQuery-событий или свойств. Поэтому, когда мы используем:

$('#myFormsTabSubmitted, #formStatusSubmitted').click(); 

JQuery возвращает объект двух объектов JavaScript. То почему он работает для обоих этих элементов или вы можете ввести любое количество элементов путем разделения запятой.

 Смежные вопросы

  • Нет связанных вопросов^_^