2010-08-25 2 views
1

Мне нужно определить, какой элемент будет первым в моей разметке, например input или select. НапримерОпределите, какой элемент на первом месте находится в HTML/DOM?

<body> 
    <input type="text" /> 
    <select><option>Test</option></select> 
<body> 

В этом случае input приходит первым в DOM, тогда как

<body> 
    <select><option>Test</option></select> 
    <input type="text" /> 
<body> 

в этом случае select приходит первым. Любой способ сделать это с помощью jQuery? Спасибо

EDIT: Просто для уточнения, я не хочу самого первого элемента, я ТОЛЬКО хочу знать, если между входом и элементом выбора, который на первом месте. Могут существовать другие элементы перед элементами select и input.

ответ

3

Использование index. если $('select:first').index() < $('input:first').index() то select является первым

Смотрите образец здесь: http://jsfiddle.net/ZLmMB/

+0

Спасибо, это было именно то, что я искал – axsuul

+1

Это будет работать до тех пор, пока первые 'select' и' input' являются братьями и сестрами. Если нет, '.index()' не будет надежным индикатором. – user113716

+0

@ user113716 действительно смотрите в этом примере: http://jsfiddle.net/ZLmMB/2/ – Shawn

2

Если вы хотите очень первый элемент в <body>, вы можете использовать :first-child так:

$("body > :first-child") 

Например ваш в первом примере:

alert($("body > :first-child")[0].nodeName);​ //alerts "INPUT" 

You can give it a try here


Или, чтобы получить первый тип входа, вы можете сделать это:

$(":input:first") 

, например:

alert($(":input:first")[0].nodeName);​ //alerts "INPUT" 

You can try that version here

+0

Мне не нужен самый первый элемент, я хочу знать, находится ли между элементом ввода и выбора, который наступает первым – axsuul

+0

@Axsuul - Обновлено, чтобы смотреть только на элементы типа ввода :) –

+0

@Gert - любой * первый ребенок на любом уровне, поэтому он выбирает множество элементов :) –

3

Если вы просто хотите знать, который приходит первым во всем документе, вы можете сделать это:

Попробуйте это:http://jsfiddle.net/85zUZ/Измените заказ и нажмите «Выполнить» в верхней части окна.

var theFirst = $('input,select').first()[0].tagName; 

alert(theFirst); 

JQuery возвращает элементы в порядке их появления в DOM, так .first() будет захватывать первый в порядке появления.