2013-09-04 32 views
5

Tôi đang sử dụng jQuery on chức năng để ràng buộc sự kiện click:Làm thế nào để có được bộ chọn mà sự kiện 'click' đã bị ràng buộc?

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

Bây giờ bên trong hàm callback Tôi muốn biết nếu sự kiện nghe tiếng 'click' đã bị sa thải khỏi #page-container hoặc .some-class. Với $(this) Tôi chỉ nhận được bộ chọn đã được nhấp.

Trả lời

8

delagateTarget của đối tượng event đề cập đến mục tiêu của đoàn:

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

http://jsfiddle.net/SmXCG/

+1

Đó chính xác là những gì tôi muốn, đơn giản và không cần tìm kiếm DOM bổ sung. Rực rỡ. – zelazowy

2

thử một cái gì đó như thế này

$('#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' đề cập đến' .do-một cái gì đó 'phần tử. – undefined

+0

yeah, @undefined có quyền – zelazowy

+0

có, @ undefined là đúng –

0

Hãy thử

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

Demo: Fiddle

2

Bạn có thể làm một cái gì đó như thế này:

$('#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

Tính năng này hoạt động nhưng yêu cầu tìm kiếm DOM bổ sung. – zelazowy

0

Working DEMO

Cố gắng khách sạn này

$('#page-container, .some-class').on('click', function(event) { 
alert($(this).text()); 
}); 
Các vấn đề liên quan