2013-04-18 38 views
27

Tôi đang sử dụng mã sau đây để phát hiện khi nhấp vào nút được tạo động.Nhận yếu tố được nhấp bằng jQuery trên sự kiện?

$(document).on("click",".appDetails", function() { 
    alert("test"); 
}); 

Thông thường, nếu bạn chỉ làm $('.appDetails').click() bạn có thể sử dụng $(this) để có được những yếu tố đó được nhấp vào. Làm thế nào tôi sẽ thực hiện điều này với mã trên?

Ví dụ:

$(document).on("click",".appDetails", function() { 
    var clickedBtnID = ?????? 
    alert('you clicked on button #' + clickedBtnID); 
}); 

Trả lời

35

Đơn giản như nó có thể được

Sử dụng $(this) đây quá

$(document).on("click",".appDetails", function() { 
    var clickedBtnID = $(this).attr('id'); // or var clickedBtnID = this.id 
    alert('you clicked on button #' + clickedBtnID); 
}); 
+0

cập nhật câu hỏi –

+0

có thấy nó .. u có thể đăng bài ur html quá – bipen

+0

Hình như tôi đang đối phó với một vấn đề bộ nhớ đệm từ máy chủ. Lấy làm tiếc. –

23

Bạn đang thiếu các thông số sự kiện trên chức năng của bạn.

$(document).on("click",".appDetails", function (event) { 
    alert(event.target.id); 
}); 
+3

Điều này hoàn hảo cho tôi. Nó cung cấp cho phần tử đã được nhấp - $ (this) chỉ cung cấp phần tử có sự kiện được đính kèm. –

2

Cách xử lý thông thường này không hoạt động tốt với ES6. Bạn có thể thực hiện việc này thay thế:

$('.delete').on('click', event => { 
    const clickedElement = $(event.target); 

    this.delete(clickedElement.data('id')); 
}); 

Lưu ý rằng mục tiêu sự kiện sẽ là phần tử được nhấp, có thể không phải là yếu tố bạn muốn (có thể là trẻ nhận sự kiện). Để có được các yếu tố thực tế:

$('.delete').on('click', event => { 
    const clickedElement = $(event.target); 
    const targetElement = clickedElement.closest('.delete'); 

    this.delete(targetElement.data('id')); 
}); 
Các vấn đề liên quan