Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.03.2014, 02:11
Интересующийся
Отправить личное сообщение для artapp Посмотреть профиль Найти все сообщения от artapp
 
Регистрация: 02.03.2014
Сообщений: 13

Управление модулями (Ajax)
Доброго времени суток. Столкнулся с проблемой.. В общем есть некое веб приложение весь его функционал разбит на модули подгружаемые через ajax. У каждого модуля есть класс module и атрибут data-module-url.. Это все работает, хорошо. Но понадобилось реализовать некое управления модулями, например удалить какой то модуль, добавить новый на страницу и т.д.
Пробовал делать это как то вот так:
function addmodule(id) {
	$('body').append('<div>id = "'+ id +'"</div>');
}
function removemodule(id) {
	$('.module[data-module-url='+ id +']').trigger('removeEvent');
}
function removeallmodule() {
	$('.module').trigger('removeallEvent');
}
$('body').delegate('.module', 'removeEvent', function() {
	$(this).remove();
});
removemodule('user/singin');

в результате ошибка:
Код:
Uncaught Error: Syntax error, unrecognized expression: .module[data-module-url=user/singin]
В общем каким образом можно реализовать это управление при ajax подгрузке?

Последний раз редактировалось artapp, 30.03.2014 в 02:18.
Ответить с цитированием
  #2 (permalink)  
Старый 30.03.2014, 02:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от artapp
в результате ошибка:
добавьте кавычки
$('.module[data-module-url="'+ id +'"]')
Ответить с цитированием
  #3 (permalink)  
Старый 30.03.2014, 03:05
Интересующийся
Отправить личное сообщение для artapp Посмотреть профиль Найти все сообщения от artapp
 
Регистрация: 02.03.2014
Сообщений: 13

Ошибка убралась, но и remove не применился
Ответить с цитированием
  #4 (permalink)  
Старый 30.03.2014, 03:24
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

artapp,
как устроены ваши модули можно только гадать
Ответить с цитированием
  #5 (permalink)  
Старый 30.03.2014, 03:34
Интересующийся
Отправить личное сообщение для artapp Посмотреть профиль Найти все сообщения от artapp
 
Регистрация: 02.03.2014
Сообщений: 13

Первоначальная загрузка модулей:
var documenturl = 'http://127.0.0.1/';
$('.load_module').each(function(){
	var $module = $(this).closest('.module');
	$.ajax({
		url: documenturl + $module.data('module-url') + "/",
		success:function(result){
			$module.html(result);
			$(this).remove();
		}
	});
});
...
<div data-module-url="user/signup" class="module">
	<div class="load_module"></div>
</div>
<div data-module-url="user/signin" class="module">
	<div class="load_module"></div>
</div>
...
Сам php выдает куски html, формы, таблицы и т.д.
Вот так они устроены. Теперь необходимо добавить возможность управления этими модулями. Удаление, добавление новых, удаление всех.

Последний раз редактировалось artapp, 30.03.2014 в 03:40.
Ответить с цитированием
  #6 (permalink)  
Старый 30.03.2014, 04:14
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

artapp,
может вы удаляите то чего ещё нет на странице?
Ответить с цитированием
  #7 (permalink)  
Старый 30.03.2014, 04:51
Интересующийся
Отправить личное сообщение для artapp Посмотреть профиль Найти все сообщения от artapp
 
Регистрация: 02.03.2014
Сообщений: 13

<div data-module-url="user/signup" class="module">
<div class="load_module"></div>
</div>
подгружается сразу при открытии сайта, вызов функции remove происходит по кнопке
Ответить с цитированием
  #8 (permalink)  
Старый 30.03.2014, 06:11
Интересующийся
Отправить личное сообщение для artapp Посмотреть профиль Найти все сообщения от artapp
 
Регистрация: 02.03.2014
Сообщений: 13

function addmodule(id) {
	$('.col-center').append('<div class="module" data-module-url="'+id+'"><div class="load_module"></div><div class="module_load"></div></div>');
	$('.col-center').find('.load_module').each(function() {
		var $module = $(this).closest('.module');
		$module.find('.module_load').show();
		$.ajax({
			url: documenturl + $module.data('module-url') + "/",
			success:function(result){
				$module.html(result);
				$(this).remove();
				$module.find('.module_load').hide();
			}
		});
	});
}
function addmodules(id) {
	for (i=0;i<20;i++) {
		addmodule(id+'/'+i);
	}
}
function removemodule(id) {
	$('.col-center').find('.module[data-module-url="'+id+'"]').remove();
}
function removeallmodule() {
	$('.col-center').find('.module').remove();
}
В общем всё оказалось проще.. Только иногда подлагивает при добавление модуля. Можно как то оптимизировать?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с AJAX Dim@ AJAX и COMET 4 16.09.2012 22:52
Ajax таблица gofkane Работа 1 26.09.2011 18:26
Ajax таблица gofkane Работа 0 25.09.2011 11:53
Ajax разбор метода mycoding jQuery 14 21.05.2010 10:57
Модуль для работы с модулями JSprog Ваши сайты и скрипты 29 02.09.2009 13:31