2011-02-08 24 views
34

Tôi có nhiều nút trên trang của tôi có cùng tên lớp. Tuy nhiên các nút này có ID khác nhau. Làm cách nào để tôi thực hiện việc này:jQuery tìm ID của nút được nhấp bởi lớp

$(".vote").click(function(){ 
    var id = $(this).{ID OF CLICKED BUTTON}; 
}); 

Tôi có thể làm cho mã giả này hoạt động như thế nào?

Cảm ơn

+1

WOW, gần 6 câu trả lời giống hệt nhau :) – benhowdle89

+2

vâng nhưng chỉ một trong số đó là đúng. – Alnitak

+0

"Phải" hoặc "Tốt nhất"? Tôi sẽ không đi xa như sử dụng các thuật ngữ như "sai" hoặc "đúng" khi nói đến một tập hợp các giải pháp, đặc biệt là khi những người đang trả lời là tất cả ở các cấp độ kỹ năng khác nhau trong sự nghiệp của họ. :) – CodeBreaker

Trả lời

68
$(".vote").click(function(){ 
    var id = this.id; 
}); 

ID có thể truy cập trực tiếp từ nguyên tố này. Hoàn toàn không cần sử dụng một phương thức jQuery.

+2

Tôi nghĩ bạn có nghĩa là "không cần" :-) (SO sẽ không cho phép tôi thực hiện một chỉnh sửa nhỏ như vậy.) – tufelkinder

+0

@tufelkinder Tôi đã thực hiện chỉnh sửa ... – Alnitak

18

Với jQuery đối tượng (không cần thiết)

$(".vote").click(function(){ 
    var id = $(this).attr('id'); 
}); 


Nếu không có đối tượng jQuery (nhanh hơn)

$(".vote").click(function(){ 
    var id = this.id 
}); 
-1

Bạn có thể sử dụng

var id = $(this).attr('id'); 
+1

-1 cho '$ (this). attr ('id') 'thay vì chỉ' this.id' – Alnitak

-1

usin g attr:

var id = $(this).attr('id'); 

.attr cho phép bạn nhận các thuộc tính thẻ html theo tên.

0

Bạn có thể muốn xem xét điều này:

$("input").click(function (event) { 
       try { 
        var urlid = $(this).attr('id') 
        var isclass = $(this).attr('class') 
        if (isclass == "classname") { 
         alert(urlid); 

         event.preventDefault(); 
        } 
       } 
       catch (err) { 
        alert(err); 
       } 
      }); 
+1

Tôi muốn -2 điều này nếu tôi có thể, một lần cho '$ (this) .attr ('id')' và một thay thế cho một bộ chọn lớp hoàn hảo tốt ('.vote') với một kiểm tra mong manh cho một giá trị lớp rất cụ thể sẽ phá vỡ nếu phần tử bao giờ nhận được hai lớp. – Alnitak

0

sử dụng này:

var id = $(this).attr('id'); 
+0

bạn đã xem tiêu đề chưa? JQuery để tìm ID .... – m0g3

+0

Yup, tôi đã thấy điều đó. Bởi tất cả các phương tiện sử dụng jQuery cho xử lý sự kiện, nhưng xin vui lòng _don't_ sử dụng nó chỉ để có được 'this.id' ra bên trong xử lý. – Alnitak

0

tôi nghĩ rằng điều này cũng làm việc

$("body").on("click",".vote",function(){ 
    var id = this.id; 
}); 
+0

Hãy cố gắng tránh chỉ bán phá giá mã như một câu trả lời và cố gắng giải thích nó là gì và tại sao. Mã của bạn có thể không hiển nhiên đối với những người không có trải nghiệm mã hóa có liên quan. – Frits

Các vấn đề liên quan