Как вызвать дополнительную функцию, основанную на том, какой элемент HTML вызвал общий обработчик? - PullRequest
0 голосов
/ 06 февраля 2012

У меня есть общий обработчик событий для моих кнопок выбора:

Мой код:

    $(document).ready(function(){$("#delAppSelectApp,#userAppSelectApp,#hexSelectApp,#countSelectApp").change(function(){
    ......
    });});

Как бы я вызвал дополнительную функцию, если изменение выбора «countSelectApp» вызвало общий обработчик.

Я пытался использовать

    alert(this.toSource())

, чтобы выяснить, какой выбор вызвал обработчик, но все, что я получаю, это предупреждение, говорящее

    [object HTMLelement]

Ответы [ 3 ]

4 голосов
/ 06 февраля 2012

В вашем обработчике событий jQuery устанавливает this в качестве элемента DOM, к которому применяется событие, так что вы можете получить прямой доступ к любым свойствам или методам, применяемым к событиям DOM, или вы можете заключить его в вызов jQuery как $(this) для доступа к методам jQuery.

Так что, на мой взгляд, самый простой (и, безусловно, самый эффективный) способ проверить, было ли это «countSelectApp», к которому применено событие, это просто использовать this.id:

if (this.id === "countSelectApp") {
   // call your function here
}

Между прочим, вместо того, чтобы перечислять все идентификаторы элементов в вашем селекторе jQuery, я был бы склонен дать этим элементам общий класс, скажем «selectApp», а затем связать обработчик изменений, используя класс в качестве селектора:

$(".selectApp").change(function() {
   if (this.id === "countSelectApp") {
      // call your function here
   }
...
});
2 голосов
/ 06 февраля 2012

спроси:

if($(this).attr('id')=="countSelectApp")
     callYourFunction();
1 голос
/ 06 февраля 2012

Вы можете использовать объект события как;

$('selector').change(function(event) {
  console.log(event.target);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...