Nhận loại phần tử với jQuery


308

Có thể, bằng cách sử dụng jQuery, để tìm ra loại phần tử với jQuery? Ví dụ, phần tử là div, span, select hay input?

Ví dụ: nếu tôi đang cố tải các giá trị vào danh sách thả xuống với jQuery, nhưng cùng một tập lệnh có thể tạo mã vào một tập hợp các nút radio, tôi có thể tạo một cái gì đó như:

$('.trigger').live('click', function () {
   var elementType = $(this).prev().attr(WHAT IS IT);
});

Đưa ra một danh sách thả xuống với một nút bên cạnh nó với lớp kích hoạt , elementTypebiến của tôi sẽ trở lại selectkhi nhấn nút.


Bạn có thể viết lại? bạn có ý nghĩa gì bởi loại yếu tố?
Abdul Munim


Câu trả lời:


558

Lấy phần tử gõ theo cách của jQuery:

var elementType = $(this).prev().prop('nodeName');

làm tương tự mà không cần jQuery

var elementType = this.previousSibling.nodeName;

Kiểm tra loại phần tử cụ thể:

var is_element_input = $(this).prev().is("input"); //true or false

16
Chỉ cần nhớ rằng hàm .prop () chỉ được thêm vào jQuery 1.6 - bạn có thể cần nâng cấp phiên bản bạn đang sử dụng!
xgretsch

Không hoạt động với jQuery 1.3.2 cũ, vì vậy đã nâng cấp lên bản mới nhất và nó hoạt động tốt.
Damodar Bashyal

2
Điều này có thể được cải thiện bằng cách chuyển 'tagName' thành 'nodeName' như được đề cập ở đây .
Kyle Stoflet 29/07/2015

1
@KyleStoflet - có vẻ như bạn nói đúng, nodeNamekhông loại hỗ trợ nhiều hơn các yếu tố, và hỗ trợ IE5.5 không phải là một vấn đề nữa, vì vậy tôi thấy không có vấn đề với việc thay đổi tagNameđể nodeNametrong câu trả lời ở trên. Cả hai sẽ hoạt động tốt cho các phần tử và phần sau cũng sẽ hoạt động trên các mã văn bản, thuộc tính, v.v.
adeneo 29/07/2015

3
Hoạt động nhưng tôi đã có một chút nhầm lẫn bởi trước (), đặc trưng cho mã ví dụ được đề cập. Về cơ bản,$(this).is("input");
Fanky

56

bạn cũng có thể sử dụng:

$("#elementId").get(0).tagName

26

bạn nên sử dụng tagNametài sản và attr('type')cho đầu vào


Một ví dụ sẽ làm cho nhận xét này mạnh mẽ hơn.
Justapigeon

16

Như Distdev đã ám chỉ, bạn vẫn cần phân biệt loại đầu vào. Điều đó có nghĩa là,

$(this).prev().prop('tagName');

sẽ cho bạn biết input, nhưng điều đó không phân biệt giữa hộp kiểm / văn bản / radio. Nếu đó là một đầu vào, thì bạn có thể sử dụng

$('#elementId').attr('type');

để cho bạn biết hộp kiểm / văn bản / radio, để bạn biết loại kiểm soát đó là gì.


9

bạn có thể sử dụng .is():

  $( "ul" ).click(function( event ) {
      var target = $( event.target );
      if ( target.is( "li" ) ) {
         target.css( "background-color", "red" );
      }
  });

xem nguồn



3

Sử dụng Nodename trên tagName:

nodeName chứa tất cả các chức năng của tagName, cộng thêm một vài chức năng. Do đó, nodeName luôn là sự lựa chọn tốt hơn.

xem Lõi DOM

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.