Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.07.2013, 22:10
Профессор
Отправить личное сообщение для bpystep Посмотреть профиль Найти все сообщения от bpystep
 
Регистрация: 06.08.2010
Сообщений: 161

Сравнение 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. Но меня как раз интересует сравнение элементов как объектов.
Ответить с цитированием
  #2 (permalink)  
Старый 22.07.2013, 23:07
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

bpystep,
а сравнение по индексу вас тоже неустраивает?
Ответить с цитированием
  #3 (permalink)  
Старый 22.07.2013, 23:44
Профессор
Отправить личное сообщение для bpystep Посмотреть профиль Найти все сообщения от bpystep
 
Регистрация: 06.08.2010
Сообщений: 161

Сообщение от рони Посмотреть сообщение
а сравнение по индексу вас тоже неустраивает?
хм... В примере я указал, что беру первую форму по селектору, но на самом деле, я беру её так:
$('.input_form input').change(
   function() {
	var form = this;
	while (!($(form).get(0) instanceof HTMLFormElement)) {
		form = $(form).parent();
	}		
   }
);


поэтому я не знаю, какой индекс у формы... тогда встает другой вопрос, как найти индекс этой формы в родительском блоке? С помощью .index() пойдет?
Ответить с цитированием
  #4 (permalink)  
Старый 23.07.2013, 00:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Сообщение от bpystep
С помощью .index() пойдет?
да -- и у вас странный способ искать родителя с тегом форма достаточно var form = $(this).parents("form")
Ответить с цитированием
  #5 (permalink)  
Старый 23.07.2013, 00:29
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Функция $ всякий раз возвращает новый объект, ты вкурсе вообще?
Поэтому $(bla) никогда не будет равна $(blabla)
Сравнивай сами DOM-узлы. Хотя тут и этого не нужно.
Ответить с цитированием
  #6 (permalink)  
Старый 23.07.2013, 09:42
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,225

Сообщение от bpystep
Как при сравнение получить вторую форму, если у меня есть первая:
Не совсем понимаю про какое "сравнение" идет реч... Но у тебя всегда есть обе формы сразу.

<!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>
Ответить с цитированием
  #7 (permalink)  
Старый 26.07.2013, 03:46
Профессор
Отправить личное сообщение для bpystep Посмотреть профиль Найти все сообщения от bpystep
 
Регистрация: 06.08.2010
Сообщений: 161

Простите, что не отвечал, уезжал отдыхать
рони,
Спасибо, исправлюсь, с помощью .index() сделал, все работает.
danik.js,
А разве вот тут:
for (var i=0; i<forms.length; i++) {
   if ($(forms[i]) != $(first_form )) {
     
   }
}
сравниваются разные, когда цикл дойдет до той же формы, то и сравнение будет такое (по вашему примеру) таким:
$(bla) == $(bla)

ksa, К сожалению я не всегда буду знать индексы нужной мне формы, поэтому и ищем соответствующие индексы, как предложил
рони, спасибо всем за помощь!
Ответить с цитированием
  #8 (permalink)  
Старый 26.07.2013, 04:56
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

bpystep, какая разница. Повторяю вновь: функция $ всякий раз возвращает новый объект, поэтому сравнение всегда будет давать отрицательный результат, даже если сравнивать $(bla) с $(bla). Проверь, дело трех секунд.
Ответить с цитированием
  #9 (permalink)  
Старый 26.07.2013, 04:57
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
alert( $('html') == $('html') )
</script>
Ответить с цитированием
  #10 (permalink)  
Старый 26.07.2013, 05:52
Профессор
Отправить личное сообщение для bpystep Посмотреть профиль Найти все сообщения от bpystep
 
Регистрация: 06.08.2010
Сообщений: 161

Сообщение от danik.js Посмотреть сообщение
bpystep, какая разница. Повторяю вновь: функция $ всякий раз возвращает новый объект, поэтому сравнение всегда будет давать отрицательный результат, даже если сравнивать $(bla) с $(bla). Проверь, дело трех секунд.
дак в этом то и заключался собственно вопрос
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
prototype DOM элементов simple Элементы интерфейса 6 02.03.2013 17:44
Получить список ВСЕХ элементов DOM Почемучкин Events/DOM/Window 7 16.04.2012 11:33
поиск элементов в DOM Bebarr Swallow Общие вопросы Javascript 1 24.06.2011 14:57
Перебор DOM элементов DjDiablo jQuery 3 04.02.2011 16:26
DOM, определение стиля элементов Maximor17 Общие вопросы Javascript 3 04.11.2010 16:24