Сравнение DOM-элементов
Приветствую. Есть 2 формы(дива, спана, кнопки и.т.д.):
<div id="div"> <form action="" method="post" class="input_form"> <input type="text"> //ну и еще что-то там </form> <form action="" method="post" class="input_form"> <input type="date"> //ну и еще что-то там </form> </div> Как при сравнение получить вторую форму, если у меня есть первая: var first_form = $('#div form:first'); var forms = $('#div').find('form'); for (var i=0; i<forms.length; i++) { if ($(forms[i]) != $(first_form )) { } } П.С. Я конечно понимаю, что можно дать формам разные id и проверять не объекты, а id. Но меня как раз интересует сравнение элементов как объектов. |
bpystep,
а сравнение по индексу вас тоже неустраивает? |
Цитата:
$('.input_form input').change( function() { var form = this; while (!($(form).get(0) instanceof HTMLFormElement)) { form = $(form).parent(); } } ); поэтому я не знаю, какой индекс у формы... тогда встает другой вопрос, как найти индекс этой формы в родительском блоке? С помощью .index() пойдет? |
Цитата:
|
Функция $ всякий раз возвращает новый объект, ты вкурсе вообще?
Поэтому $(bla) никогда не будет равна $(blabla) Сравнивай сами DOM-узлы. Хотя тут и этого не нужно. |
Цитата:
<!DOCTYPE html> <html> <head> <script src="http://code.jquery.com/jquery-latest.js"></script> <!-- <link rel="stylesheet" type="text/css" href="tmp.css" /> --> <style type="text/css"> </style> <script type="text/javascript"> $(document).ready(function (){ var o=document.getElementById('div'); var of=o.getElementsByTagName('form'); // вот это первый... alert(of[0]); // а вот второй. alert(of[1]); // а это третий. // три аккорда! }); </script> </head> <body> <div id="div"> <form action="" method="post" class="input_form"> <input type="text"> //ну и еще что-то там </form> <form action="" method="post" class="input_form"> <input type="date"> //ну и еще что-то там </form> </div> </body> </html> |
Простите, что не отвечал, уезжал отдыхать :)
рони, Спасибо, исправлюсь, с помощью .index() сделал, все работает. danik.js, А разве вот тут: for (var i=0; i<forms.length; i++) { if ($(forms[i]) != $(first_form )) { } }сравниваются разные, когда цикл дойдет до той же формы, то и сравнение будет такое (по вашему примеру) таким: $(bla) == $(bla) ksa, К сожалению я не всегда буду знать индексы нужной мне формы, поэтому и ищем соответствующие индексы, как предложил рони, спасибо всем за помощь! |
bpystep, какая разница. Повторяю вновь: функция $ всякий раз возвращает новый объект, поэтому сравнение всегда будет давать отрицательный результат, даже если сравнивать $(bla) с $(bla). Проверь, дело трех секунд.
|
<script src="http://code.jquery.com/jquery-latest.min.js"></script> <script> alert( $('html') == $('html') ) </script> |
Цитата:
|
Часовой пояс GMT +3, время: 02:18. |