Управление модулями (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] |
Цитата:
$('.module[data-module-url="'+ id +'"]') |
Ошибка убралась, но и remove не применился
|
artapp,
как устроены ваши модули можно только гадать |
Первоначальная загрузка модулей:
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,
может вы удаляите то чего ещё нет на странице? |
<div data-module-url="user/signup" class="module"> <div class="load_module"></div> </div>подгружается сразу при открытии сайта, вызов функции remove происходит по кнопке |
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. |