Jquery从内部函数中获取匹配的选择器文本

时间:2010-08-27 08:16:25

标签: jquery jquery-selectors get selector

有没有办法从函数中获取调用某些函数(如果存在)的选择器的文本?

例如

$('#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 个答案:

答案 0 :(得分:2)

您可以使用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/

答案 1 :(得分:0)

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

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

});

答案 2 :(得分:0)

您可以在回调中使用$(this)来获取实际元素并访问选择器中使用的元素的属性。

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

jsfiddle示例:http://jsfiddle.net/us8r9/