Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Управление модулями (Ajax) (https://javascript.ru/forum/jquery/46137-upravlenie-modulyami-ajax.html)

artapp 30.03.2014 02:11

Управление модулями (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 подгрузке?

рони 30.03.2014 02:51

Цитата:

Сообщение от artapp
в результате ошибка:

добавьте кавычки
$('.module[data-module-url="'+ id +'"]')

artapp 30.03.2014 03:05

Ошибка убралась, но и remove не применился

рони 30.03.2014 03:24

artapp,
как устроены ваши модули можно только гадать

artapp 30.03.2014 03:34

Первоначальная загрузка модулей:
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, формы, таблицы и т.д.
Вот так они устроены. Теперь необходимо добавить возможность управления этими модулями. Удаление, добавление новых, удаление всех.

рони 30.03.2014 04:14

artapp,
может вы удаляите то чего ещё нет на странице?

artapp 30.03.2014 04:51

<div data-module-url="user/signup" class="module">
<div class="load_module"></div>
</div>
подгружается сразу при открытии сайта, вызов функции remove происходит по кнопке

artapp 30.03.2014 06:11

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();
}
В общем всё оказалось проще.. Только иногда подлагивает при добавление модуля. Можно как то оптимизировать?


Часовой пояс GMT +3, время: 14:54.