Сравнение 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, время: 00:51. |