как совместить append () и replaceWith () в jquery? - PullRequest
0 голосов
/ 28 февраля 2012

Является ли способ Jquery для объединения append() и replaceWith()?

У меня есть форма входа в JQM-проект, сидящая на каждом сайте.Поскольку в DOM будет загружено несколько страниц, мне нужно перемещать длинную форму «по ходу», когда пользователь переходит со страницы на страницу, чтобы избежать дублирования идентификаторов # идентификаторов в DOM.

Мой вопрос:Я могу сделать так:

 $('.form_in_new_page').replaceWith('.form_in_old_page')

Но есть ли способ "добавить и заменить" , чтобы я мог сделать это с помощью одной строки кода?

Спасибо за помощь!

РЕДАКТИРОВАТЬ: немного больше информации Вот мой сценарий, который я запускаю на странице выше:

$('div:jqmData(role="page").basePage').on('pagebeforehide', function(e, data) {

     // look for unique elements on the page being left
     $(this).find(':jqmData(unique="true")').each(function(){

         var uniqueID = $(this).jqmData("unique-id"),
             nextPage = data.nextPage,
             nextUnique = nextPage.find( ":jqmData(unique-id='"+uniqueID+"')" ),
             nextUniqueID = nextUnique.jqmData('unique-id') === uniqueID;

         // if a unique element with id=123 is on both from and next page
         if ( nextUniqueID == true ) {
             // append element from page being left to and replace it on next page
             nextUnique.replaceWith( $(this) );
             }
     });       
  });   

Мне нужно держать свои страницы внутриDOM в моем приложении.Все страницы имеют всплывающее окно входа / выхода, которое включает в себя форму и ввод с идентификаторами.Так что, если у меня есть 10 страниц в моей DOM, у меня будет 10 всплывающих окон с 10 формами и 10x каждый ID.Я вставляю всплывающие окна автоматически для каждого, чтобы они были там, если пользователь вызывает подстраницу напрямую.Однако по мере того, как пользователь переходит на следующую страницу, мне нужно убедиться, что форма на первой странице добавляет и заменяет форму на 2-й странице.

Надеюсь, теперь все ясно.

Вышеприведенное только заменяет форму на новой странице, но все равно оставляет ее на старой странице.

1 Ответ

1 голос
/ 28 февраля 2012

В jquery, поскольку функции возвращают это ($), вы можете связывать вызовы:

$("#selector").replaceWith("<div>Hello</div>").append('<div>test2</div>');

Конечно, это означает, что вам нужно объединять вызовы в правильном порядке.

...