Пока кто-то не найдет более разумный способ, можно обойти это, добавив обработчик события к самим выбранным элементам:
$('.tabs').click(function(event) {
event.root = this; // or whatever name suits you best
});
$(".tabs").delegate("li:not(.selected) a", "click", function (event) {
// event.root contains the DOM element
});
jQuery гарантирует, что обработчики событий выполняются в том порядке, в котором они присоединены.
Или вы вообще не используете delegate
и самостоятельно проверяете селектор ( это, вероятно, лучшее решение ):
$('.tabs').click(function(event) {
if($(event.target).is("li:not(.selected) a")) {
// this refers to the .tab DOM element
// event.target refers to the originally clicked element
}
});
Обновление:
Исходный объект Event
доступен через event.originalEvent
. Так что вы могли бы сделать:
$(".tabs").delegate("li:not(.selected) a", "click", function (event) {
var dom = event.originalEvent.currentTarget;
});
Но, похоже, currentTarget
поддерживается только в IE9, и нет альтернативы в более низких версиях IE .
Таким образом, большинство кроссбраузерно-совместимых решений - все те же, что и выше.