Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 06.04.2015, 13:29
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,124

Сообщение от demoniqus
Вот модель происходящего
Уже хорошо.
Как вариант просто поменяй местами два последних действия.

<!DOCTYPE html>
<html>
<head>
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
<link rel='stylesheet type=text/css href=tmp.css' />
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function(){
	$('#do').click(function(){
		var df = document.createDocumentFragment();
		var input1 = $('<input type="checkbox" id="checkbox1" />');
		input1.click(function(){
			alert('click '+this.checked);
		});
		input1.change(function(){
			alert('change '+this.checked);
		});
		$('#result').append(input1);
		input1.click();
	});
});
</script>
</head>
<body>
<button id="do">CYCLE</button>
<div id="result"></div>
</body>
</html>
Ответить с цитированием
  #12 (permalink)  
Старый 06.04.2015, 13:31
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,124

Сообщение от demoniqus
Кстати, ни разу так не пробовал... Любопытный эффект что ли?
Там кагбэ двойной клик получается...
Ответить с цитированием
  #13 (permalink)  
Старый 06.04.2015, 13:33
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,124

Сообщение от demoniqus
Во всех браузерах кроме FF input меняет свое состояние и в консоль пишется true. В FF при вызове input.click()в консоль пишется false и сам checkbox не меняет своего состояния.
В моем примере в ФФ работает ...
Ответить с цитированием
  #14 (permalink)  
Старый 06.04.2015, 13:33
Профессор
Отправить личное сообщение для demoniqus Посмотреть профиль Найти все сообщения от demoniqus
 
Регистрация: 28.05.2008
Сообщений: 181

Сообщение от laimas Посмотреть сообщение
Устанавливайте обработчик элементам при их добавлении на страницу, или делегируйте их обработку ближайшему родителю гарантировано присутствующему на странице.
Форма сложная, ее компоненты связаны друг с другом через различные события. Я разделил ее создание и настройку на отдельные методы, чтобы можно было нормально понимать этот код. И очень не хотелось бы все это смешивать или вообще делать один ОЧЕЕЕЕЕЕЕЕЕЕЕЕЕЕНЬ длинный метод из-за одного только браузера...
Ответить с цитированием
  #15 (permalink)  
Старый 06.04.2015, 13:34
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,124

demoniqus, ты мой пример смотрел?
Вызов click() на radio не изменяет его checked
Ответить с цитированием
  #16 (permalink)  
Старый 06.04.2015, 13:37
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

demoniqus, пофигу какая у вас там форма ибо вы явно прописываете добавление элементов, и при их добавлении нужно и устанавливать обработчик, а лучше делегировать родителю. А об иных проблемах, которые могут быть, написал ksa.
Ответить с цитированием
  #17 (permalink)  
Старый 06.04.2015, 13:40
Профессор
Отправить личное сообщение для demoniqus Посмотреть профиль Найти все сообщения от demoniqus
 
Регистрация: 28.05.2008
Сообщений: 181

Сообщение от ksa Посмотреть сообщение
В моем примере в ФФ работает ...
KSA, ты нарушил условие эксперимента.
Объясняю: я создаю некую форму (но еще не помещаю ее в дерево документа), навешиваю обработчики событий (которые влияют на состояние данной формы и содержат в себе определенную логику связей состояний элементов). Из-за логической связи состояний различных элементов формы их проще настроить, вызвав нужный обработчик, нежели писать еще кучу кода. Вот через тот самый click() я и вызываю эту настройку. И сделать это я хочу до того, как показать форму пользователю (самого как пользователя бесит жутко, когда у тебя на глазах начинают прыгать сами по себе разные прибамбасы по всей странице). И только потом уже готовую форму я append'ю в страницу. Ты же поменял настроечный click и append местами.
Ответить с цитированием
  #18 (permalink)  
Старый 06.04.2015, 13:44
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,124

Сообщение от demoniqus
ты нарушил условие эксперимента
Я только поправил твой тестовый пример...
Ответить с цитированием
  #19 (permalink)  
Старый 06.04.2015, 13:47
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,124

Сообщение от demoniqus
Из-за логической связи состояний различных элементов формы их проще настроить, вызвав нужный обработчик, нежели писать еще кучу кода. Вот через тот самый click() я и вызываю эту настройку. И сделать это я хочу до того, как показать форму пользователю
Ты сам себе создал проблемы и теперь застрял в особенностях того же ФФ. Т.ч. все как в анекдоте
Цитата:
- Доктор, когда я делаю так (сворачивается в немыслимую позу)... У меня сильно болит вот здесь.
- Не делайте так!
Ответить с цитированием
  #20 (permalink)  
Старый 06.04.2015, 13:50
Профессор
Отправить личное сообщение для demoniqus Посмотреть профиль Найти все сообщения от demoniqus
 
Регистрация: 28.05.2008
Сообщений: 181

Сообщение от ksa Посмотреть сообщение
Я только поправил твой тестовый пример...
Вот эта правка и изменила условие эксперимента.
Мне нужно, чтобы click происходил ДО ТОГО, как форма попадет в страницу. Особенно в свете особенностей работы того же IE, который примерно до 10х раз тормознутее того же Хрома и Лисы...
Сейчас на w3c читаю инфу по click и change и пока не вижу ничего такого, что могло бы объяснить подобное поведение в FF. Я просто хотел предположить, что в данном случае FF наиболее строго следует какой-нибудь спецификации (как это часто бывает в случае IE), но только не вижу такой спецификации.

Сообщение от ksa Посмотреть сообщение
Ты сам себе создал проблемы и теперь застрял в особенностях того же ФФ. Т.ч. все как в анекдоте
Это не портал анекдотов и не гороскоп. Это очень серьезное приложение, очень тяжелое. И оно было таким еще до меня. Приходится сравнительно долго ждать полной загрузки страницы прежде, чем все компоненты наконец займут свои места, что довольно сильно раздражает, т.к. невозможно быстро работать. Я стараюсь отдавать пользователю уже готовый интерфейс, который только нужно отрендерить без каких-либо дополнительных настроек.
И, как я сказал, это сложное приложение, а потому различные связи будут и никуда от этого не деться.
Вопрос в том, на что я наткнулся: это глюк Лисы или же это на самом деле нормальное поведение, а остальные браузеры просто прощают эту ошибку (сомневаюсь, что IE может быть лояльнее, чем хоть кто-нибудь другой)?

Сообщение от ksa Посмотреть сообщение
не делайте так
Если бы знать, где упадешь... кто ж знал, что click() может не изменить состояние checkbox и radio?

Последний раз редактировалось demoniqus, 06.04.2015 в 14:10.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов документа из и его отображение cemper_nv Общие вопросы Javascript 2 26.07.2014 12:51
в getElement удаётся получить тэг через getElemetsByTagName Терехов Станислав Общие вопросы Javascript 19 19.06.2014 06:35
Помогите пожалуйста с radio проверить на checked Solonik Общие вопросы Javascript 1 23.07.2013 22:35
Двойной вызов события click Tmin10 jQuery 3 13.07.2012 22:15
Checked Radio CTPECC jQuery 6 13.11.2009 19:07