JQuery Получить согласованный текст селектора изнутри функции - PullRequest
1 голос
/ 27 августа 2010

Есть ли способ получить текст селектора, который вызвал какую-то функцию (если она существует) внутри функции?

Например

$('#foo, .bar').click(function() {

   // Here I want to figure out if there was a match on #foo, or .bar

});

В основном я хочу иметь составной селектор, подобный приведенному выше (http://api.jquery.com/multiple-selector/), но иметь возможность узнать, какой из них был найден, когда я попаду внутрь функции.

Ответы [ 3 ]

2 голосов
/ 27 августа 2010

Вы можете получить эту информацию с помощью event object.

$('#foo, .bar').click(function(event) {

   if(event.target.id === 'foo'){
      alert('foo');
   }
   else if(event.target.className === 'bar'){
      alert('bar');
   }

});

Пример: http://www.jsfiddle.net/8CACU/

Ссылка: http://api.jquery.com/event.target/

0 голосов
/ 27 августа 2010

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

$('#foo, .bar').click(function() { 
    if($(this).attr('id') == 'foo')  {
        alert('foo handled');
    } else if($(this).hasClass('bar')) {
        alert('bar handled');
    }
});

jsfiddle sample: http://jsfiddle.net/us8r9/

0 голосов
/ 27 августа 2010
$('#foo, .bar').click(GOTEMM(event) {

   if(event.target.id === 'foo'){
      alert('foo');
   }
   elseif(event.target.className === 'bar'){
      alert('bar');
   }

});
...