2013-09-04 11 views
5

używam jQuery on funkcji powiązać zdarzenie click:Jak uzyskać selektor, z którym związane jest zdarzenie "kliknięcie"?

$('#page-container, .some-class').on('click', '.do-something', function(event) { 
    // #page-container or .some-class? 
}); 

Teraz wewnątrz funkcji zwrotnej Chcę wiedzieć, czy „kliknięcie” Impreza została wystrzelona z #page-container lub .some-class. Dzięki $(this) otrzymuję tylko wybrany selektor, który został kliknięty.

Odpowiedz

8

delagateTarget właściwością obiektu event odnosi się do celu delegacji:

$('#page-container, .some-class').on('click', '.do-something', function(event) { 
    var dt = event.delegateTarget; 
}); 

http://jsfiddle.net/SmXCG/

+1

Dokładnie to, co chciałem, proste i bez dodatkowego wyszukiwania DOM. Znakomity. – zelazowy

2

spróbować coś takiego

$('#page-container, .some-class').on('click', '.do-something', function(event) { 
     $(this).attr('id'); // #page-container 

     $(this).hasClass('.some-class'); //Will return true if it has some-class 
    }); 
+1

'this' dotyczy' uruchamiać-tce 'element. – undefined

+0

tak, @undefined ma prawo – zelazowy

+0

tak, @ undefined ma rację –

0

Spróbuj

$('#page-container, .some-class').on('click', '.do-something', function(event) { 
    var isSomeClass = $(this).closest('.some-class').length > 0 
}); 

Demo: Fiddle

2

można zrobić coś takiego:

$('#page-container, .some-class').on('click', '.do-something', function (event) { 
    if ($(this).closest('#page-container').length) 
     alert('Its #page-container'); 
    else if ($(this).closest('.some-class').length) 
     alert('Its .some-class'); 
}); 
+0

Działa, ale wymaga dodatkowego wyszukiwania DOM. – zelazowy

0

Roboczą DEMO

spróbować tej

$('#page-container, .some-class').on('click', function(event) { 
alert($(this).text()); 
}); 
Powiązane problemy