2010-02-25 36 views
7

thể trùng lặp:
Can jQuery provide the tag name?

Hi!

Câu hỏi này rất cơ bản, tôi xấu hổ hỏi nhưng tôi đã cố gắng tìm câu trả lời trong 30 phút mà không có kết quả nào.

Làm cách nào để tìm hiểu loại phần tử nào đã được nhấp vào trong mã bên dưới.

$('*').click(function (event) { 
var this_element = $(this).???; 
return false; 
}) 

gì tôi đang tìm kiếm là phải có bộ biến this_element để 'a' nếu đó là một liên kết, 'p' nếu đó là một đoạn 'div' nếu ...

Cảm ơn!

+0

Xem: http://stackoverflow.com/questions/341900/how-can-i-determine-the-element-type-of-a-matched-element-in-jquery và http://stackoverflow.com/questions/1532331/can-jquery-provide-the-tag-name và http://stackoverflow.com/questions/1864151/how-to-know-the-type-of-an-jquery- đối tượng ... – Shog9

+0

bằng cách này, nên bao gồm 'event.stopPropagation();' để ngăn không cho nhấp chuột của bạn được chuyển đến các phần tử gốc không có lý do chính đáng. xem tài liệu api: http://api.jquery.com/get/ – ghoppe

+0

@ghoppe - 'return false;' trong sự kiện jQuery xử lý '.stopPropagation()' và '.preventDefault()' – gnarf

Trả lời

8

Hãy thử điều này:

$('*').click(function (event) { 
    var this_element = this.tagName.toLowerCase(); 
    return false; 
}); 

Con trỏ this đề cập đến các yếu tố thực tế đang được thực thi. Là một phần của lõi DOM Cấp 2, tất cả các phần tử DOM đều có thuộc tính được gọi là .tagName.

+0

Hãy chắc chắn '. ToLowerCase()' một số trình duyệt thực hiện tất cả các mũ cho '.tagName' trong khi những trình duyệt khác thì không. – gnarf

+0

Nó thực sự phụ thuộc vào những gì bạn đang làm với tên thẻ. Nó có thể không quan trọng. Nhưng đủ công bằng, tôi sẽ thực hiện thay đổi. – Xavi

3
$(this).get(0).tagName; 
+0

um, -1 cho cái gì? nó hoạt động: http://jsbin.com/akohe/edit – ghoppe

+4

donno, nhưng nó hơi dư thừa - '$ (this) .get (0)' phải luôn bằng 'this'. – Shog9

+1

chỉ đúng trong trường hợp cụ thể này (bấm vào một phần tử). $ (this) có thể chứa nhiều hơn một phần tử DOM… – ghoppe

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