Отримати тип елемента за допомогою jQuery


308

Чи можна, використовуючи jQuery, з’ясувати тип елемента з jQuery? Наприклад, чи елемент є div, span, select або input?

Наприклад, якщо я намагаюся завантажити значення у спадному списку за допомогою jQuery, але той самий скрипт може генерувати код у наборі радіо кнопок, чи можу я створити щось на кшталт:

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

З огляду на спадний список із кнопкою поруч із класом тригера , моя elementTypeзмінна повинна повернутися selectпісля натискання кнопки.


Ви можете перефразовувати? що ти маєш на увазі під типом елемента?
Абдул Мунім


Відповіді:


558

Отримання елемента введіть спосіб jQuery:

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

робити те ж саме без jQuery

var elementType = this.previousSibling.nodeName;

Перевірка конкретного типу елемента:

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

16
Пам'ятайте лише, що функція .prop () була додана лише у jQuery 1.6 - можливо, вам знадобиться оновити використану вами версію!
xgretsch

Не працював зі старим jQuery 1.3.2, тому оновлено до останнього, і він працював чудово.
Дамодар Баш'ял

2
Це можна покращити, переключивши 'tagName' на 'nodeName', як згадувалося тут .
Кайл Стофлет

1
@KyleStoflet - це , здається , що ти маєш рацію, nodeNameробить підтримку більш типів елементів, а також підтримка IE5.5 не повинно бути проблемою більше, тому я не бачу ніяких проблем зі зміною , tagNameщоб nodeNameу відповіді вище. Обидва будуть працювати нормально для елементів, а останні також працюватимуть над текстовими кодами, атрибутами тощо.
adeneo

3
Працює, але мене трохи збило з пантелику prev (), яке є специфічним для відповідного коду. В основному,$(this).is("input");
Fanky

56

також ви можете використовувати:

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

26

ви повинні використовувати tagNameвластивості та attr('type')для входів


Приклад зробить цей коментар сильнішим.
Юстапіген

16

Як наголошував Дістдев, вам все одно потрібно диференціювати тип введення. Тобто,

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

скажу вам input, але це не відрізняє прапорець / текст / радіо. Якщо це вхід, ви можете використовувати

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

щоб повідомити вам прапорець / текст / радіо, щоб ви знали, що це за контроль.




3

Використовувати ім'я Node над tagName:

nodeName містить усі функції tagName, а також ще кілька. Тому nodeName - це завжди кращий вибір.

див. основу DOM

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.