2010-07-13 2 views
2

Право, идиот момент подходит. Я сделал поиск, но не могу найти правильное решение.Как получить тип элемента. JavaScript/jQuery

У меня есть селектор jQuery, который выбирает класс, возможно, ID, на самом деле это может быть что угодно, этот селектор вводится в функцию, которую я программирую.

мне нужно, чтобы иметь возможность выяснить тип каждого элемента, например:

<div class="target"></div> 

вернуть бы DIV и

<input class="target" /> 

вернуть бы вход, просто не так ли?

Ну, вы бы так подумали, но я не могу найти решение.

Любая помощь будет принята с благодарностью :-)

ответ

4

Вы должны получить лежащий в основе DOM элемента и доступа к tagName собственности. Например,

alert($("#target").get(0).tagName); 
// -> DIV 

Имейте в виду, что браузеры будут возвращать имя тега в верхнем регистре, так что-то, как это будет причинить вам немного печали:

if ($("#target").get(0).tagName == "div") { alert("DIV!"); } 
+1

Это то, что я пытался использовать 'tagName' непосредственно в селекторе, не используя' .get (0) '. Большое спасибо! : D –

0

попробовать:

$("yourelement").is("input") 

или:

if ($(this).is('input:checkbox')) 

и т.д .... где это уместно

+0

Спасибо за ваш ответ, я бы предпочел вернуть тип элемента, как показали другие, и запустить его через условие оттуда :-) –

+0

не беспокоится - просто еще один из многих способов скинуть jquery cat :) –

1
$.fn.tagName = function() { 
    return this.get(0).tagName; 
} 
alert($('#testElement').tagName()); 

Чтобы объяснить немного больше о том, почему ваш оригинальный пример не работает, каждый() метод всегда возвращает исходный объект JQuery (если JQuery не сам объект был модифицированный). Для того, чтобы увидеть, что происходит в каждом с вашим кодом, вот некоторые псевдокоды, который показывает, как работает каждый метод():

Это не то, как каждый() на самом деле получает реализовано (длинный выстрел, вероятно), но это означает, что возвращаемое значение функции action() игнорируется.

+0

Спасибо за ваш ответ! +1 –

Смежные вопросы