websofter
@websofter
Programmer...

Как соединить новый динамически создаваемый элемент в DOM с socket.io в Node.js?

В процессе работы пользователь создает новый элемент дерева в DOM, пытаюсь соединить данный элемент и socket.io, но ничего не выход, а когда этот элемент статический, то все работает. В чем проблема? Использую в стороне сервера:
io.sockets.on('connection', function (socket) {
		// Клиент подключен
		socket.emit('chat', { zeit: new Date(), text: 'Теперь вы подключены к серверу!' });
		// Отправка текста клиентом
		socket.on('chat', function (data) {
		// Передача текста всем клиентам в чате
			io.sockets.emit('chat', { zeit: new Date(), name: data.name || 'Anonym', text: data.text, x: data.x, y: data.y });
		});
});

а на стороне клиента:
//*******************SOCKET*************************
	// WebSocket
	var socket = io.connect();
	// Новое сообщение
	socket.on('chat', function (data) {
		var zeit = new Date(data.zeit);
		contentId.append(
			$('<li></li>').append(
				// Время дня
				$('<span>').text('[' +
					(zeit.getHours() < 10 ? '0' + zeit.getHours() : zeit.getHours())
					+ ':' +
					(zeit.getMinutes() < 10 ? '0' + zeit.getMinutes() : zeit.getMinutes())
					+ '] '
				),
				// Имя
				$('<b>').text(typeof(data.name) != 'undefined' ? data.name + ': ' : ''),
				// Текст
				$('<span>').text(data.text))
		);
		// Прокрутка списка вниз
		//$('body').scrollTop($('body')[0].scrollHeight);
	});
	//*******************SOCKET*************************
//...
	// Отправка сообщения
	function senden(){
		// Чтение полей ввода
		var name = nameId.val();
		var text = editorId.val();
		//*******************SOCKET*************************
		// Отправка сокета
		socket.emit('chat', { name: name, text: text });
		//*******************SOCKET*************************
		// Установка пустого текста
		editorId.val('');
	}


По сути , мне надо динамически создавать комнаты и отобразить в них новый поток сообщений.
  • Вопрос задан
  • 2393 просмотра
Пригласить эксперта
Ответы на вопрос 2
SagePtr
@SagePtr
Еда - это святое
Может быть, переменная contentId не определена?
Ответ написан
Я ответ не знаю, н оу меня была похожая проблемма с Ajax-ом: при создании елемента динамически не работали обработчики. Решил таким путем: поставил обработчик так
$body.on('click', $myElem, function(){
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы