Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.01.2011, 14:44
Аспирант
Отправить личное сообщение для nematod Посмотреть профиль Найти все сообщения от nematod
 
Регистрация: 09.02.2010
Сообщений: 87

Вызов функции после изменения данных
Здравствуйте.
Зациклился на проблеме. Делаю чат.
Всё сообщения вывожу с помощью php, а новые подгружаю с помощью ajax. Вот код:
$(document).ready(function(){
	var messageList = $(\".content_mes > p\");
	function updateShoutbox(){
		$.ajax({
			type: \"POST\", url: \"blocks/shoutbox.php\", data: \"action=update&id=".$id."&id_mes=".$last_id."\",
			complete: function(data){
				messageList.html(data.responseText);
				messageList.fadeIn(\"fast\");
			},
		});
	}
	setInterval(function () {updateShoutbox();},5000);
});

Результат вывожу в блок div со скроллингом.

Проблема вопроса: Нужно перемещать скроллинг вниз после того как добавилось новое сообщение.

Код скролинга (возможно тоже не совсем верно):
$(\"div#scroll\").scrollTop(100000);


Буду очень признателен за любые мысли.
Ответить с цитированием
  #2 (permalink)  
Старый 20.01.2011, 15:08
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

$(\"div#scroll\").animate({scrollTop: this.scrollHeight}, 'slow');
так интереснее будет.

scrollTop это свойство а не функция
document.getElementById('scroll').scrollTop = 100000;
__________________
.

Последний раз редактировалось Skipp, 20.01.2011 в 15:13.
Ответить с цитированием
  #3 (permalink)  
Старый 20.01.2011, 15:18
Аспирант
Отправить личное сообщение для nematod Посмотреть профиль Найти все сообщения от nematod
 
Регистрация: 09.02.2010
Сообщений: 87

Сообщение от Skipp Посмотреть сообщение
$(\"div#scroll\").animate({scrollTop: this.scrollHeight}, 'slow');
так интереснее будет.

scrollTop это свойство а не функция
document.getElementById('scroll').scrollTop = 100000;
Сообщение от Skipp
$(\"div#scroll\").animate({scrollTop: 10000}, "slow");
Согласен, медленная прокрутка смотрится лучше.

Сообщение от Skipp
scrollTop это свойство а не функция
document.getElementById('scroll').scrollTop = 100000;
Я понимаю, в этом-то и проблема, мне нужна функци которая будет срабатывать при изменении подгружаемых данных, а scrollTop я загоняю уже в эту функцию:
function(){ $(\"div#scroll\").animate({scrollTop: 10000}, \"slow\");}


Как вызвать функцию при изменении подгружаемых данных?!
Ответить с цитированием
  #4 (permalink)  
Старый 20.01.2011, 15:25
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

знаете сколько людей похожих вопрос задаёт?)
почему бы просто не делать прокрутку там где добавляете данные зачем придумывать события, всё просто.
$(document).ready(function(){
	var messageList = $(\".content_mes > p\");
	function updateShoutbox(){
		$.ajax({
			type: \"POST\", url: \"blocks/shoutbox.php\", data: \"action=update&id=".$id."&id_mes=".$last_id."\",
			complete: function(data){
				messageList.html(data.responseText);
				messageList.fadeIn(\"fast\");
                $(\"#scroll\").animate({scrollTop: 10000}, \"slow\");
			},
		});
	}
	setInterval(function () {updateShoutbox();},5000);
});

это я примерно, может вам не туда надо вставлять её.
__________________
.

Последний раз редактировалось Skipp, 20.01.2011 в 15:28.
Ответить с цитированием
  #5 (permalink)  
Старый 20.01.2011, 15:28
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

чёрт и забыл совсем!
И не делайте так больше
$(\"div#scroll\") - тут вы делаете лишнею операцию
$(\"#scroll\") лучше намного.
id на странице 1 зачем вам искать все дивы а потом ещё перебирать их на наличие элемента с нужным id...
document.getElementById()
Эффективнее же чем
var divs = document.getElementsByTagName('div');
for(var i = 0; i<divs.length; i++)
     if(divs[i].getAttribute('id') == "scroll") alert("YUPpiii");
__________________
.

Последний раз редактировалось Skipp, 20.01.2011 в 15:31.
Ответить с цитированием
  #6 (permalink)  
Старый 20.01.2011, 15:38
Аспирант
Отправить личное сообщение для nematod Посмотреть профиль Найти все сообщения от nematod
 
Регистрация: 09.02.2010
Сообщений: 87

Сообщение от Skipp
$(\"div#scroll\") - тут вы делаете лишнею операцию
$(\"#scroll\") лучше намного.
Спасибо за полезные советы.

Что касается прокрутки во время выполнения ajax запроса, я уже так пробовал, но тут возникает небольшая проблема:
пользователь не может прочитать предидущие сообщения, т.к. каждые 5сек(вместе с выполнением ajax) скролл падает вниз((((

Было бы удобно, если бы ajax выполнялся при изменении данных))) Но тут мы возвращаемся к тому, с чего начали))) Беда... ))))
Ответить с цитированием
  #7 (permalink)  
Старый 20.01.2011, 15:41
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

не за что.
ну это уже вопросы юзабилити)
__________________
.
Ответить с цитированием
  #8 (permalink)  
Старый 20.01.2011, 15:44
Аспирант
Отправить личное сообщение для nematod Посмотреть профиль Найти все сообщения от nematod
 
Регистрация: 09.02.2010
Сообщений: 87

Я уже думал, может быть выполнять функцию при изменении размера блока div? Но что-т не работает, может не верно прописываю, я в скрипте ещё не силён(((
$(\"#scroll\").onResize(function(){ $(\"#scroll\").animate({scrollTop: 10000}, \"slow\");});
Ответить с цитированием
  #9 (permalink)  
Старый 20.01.2011, 15:51
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

какой блин onResize ? вы чего, сначала смотрели бы что это за событие.
просто проверяйте не увеличился ли scrollHeight( это высота елемента с прокруткой )
__________________
.
Ответить с цитированием
  #10 (permalink)  
Старый 20.01.2011, 15:54
Аспирант
Отправить личное сообщение для nematod Посмотреть профиль Найти все сообщения от nematod
 
Регистрация: 09.02.2010
Сообщений: 87

))))) Я ж говорю не силён в javascript
Да сейчас прочитал, вообще не в тему этот ресайс))

Такс, занчит щас буду мучить scrollHeight)))
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запуск функции после ресайзинга странички dummer232 jQuery 2 30.09.2010 16:23
Вызов функции, находящейся в другой функции ZneP Events/DOM/Window 6 24.08.2010 18:45
непонятный вызов функции hedgi Общие вопросы Javascript 2 05.08.2010 11:55
вызов функции из функции sharp_007 Общие вопросы Javascript 2 03.04.2010 21:13
Вызов функции из другой функции.. ?? glutton Общие вопросы Javascript 3 21.08.2009 22:33