2014-02-01 3 views
1

Я пытаюсь динамически создавать всплывающие всплывающие подсказки с минимальной разметкой (так как их будет много в конце).динамическое создание всплывающего окна в jQuery mobile

В моей разметке у меня есть <div id='help_roles-description'>...</div>

я сделать Ajax вызов к серверу для получения helptexts и обработать их, как это:

// If there are helptext updates, setup them accordingly 
if (typeof response.helptexts != "undefined") { 
    for (var i = 0; i < response.helptexts.length; i++) { 
     if(response.helptexts[i].html.length) { 
      var help_label = $("#help_" + response.helptexts[i].id + ""); 
      if(help_label) { 
       // First of call, create the popup 
       help_label.closest('div[data-role=dialog]').append($("<div></div>") 
         .attr("id", "#helptext_" + response.helptexts[i].id + "") 
         .attr("data-role", "popup") 
         .addClass("ui-content") 
         .html(response.helptexts[i].html) 
         .trigger("create") 
         ); 

       // Store the html DOM that is inside the label, so we can wrap it in an anchor 
       var html = help_label.html(); 
       help_label.empty(); 
       help_label.append($("<a></a>") 
         .attr("href", "#helptext_" + response.helptexts[i].id) 
         .attr("data-rel", "popup") 
         .addClass("helper_link") 
         .html(html) 
         ); 

       // Output happyness 
       logger("Setting help for '" + "#helptext_" + response.helptexts[i].id + "" + "' to '" + response.helptexts[i].html+ "'"); 
      } 
     } 
    } 
} 

В одном примере идентификатор является roles-description. Я не получаю DIV, созданный с идентификатором helptext_roles-description, заселенный с HTML в ответ, как я ожидал, вместо этого я получаю это:

<div style="display: none;" id="#helptext_roles-description-placeholder"> 
    <!-- placeholder for #helptext_roles-description --> 
</div> 

Я попытался прибегая к помощи этого, но там, кажется, в горестном отсутствие вещей с мои поисковые запросы и поисковые заполнители возвращают много материалов на входы.

Где я использую closest('div').prepend Я попытался добавлением, до и добавлений непосредственно к help_label, и делаю его help_label.parent()

Я даже вынул .html и .trigger бит, чтобы быть вне процесса создания ,

Я также попытался создать div с идентификатором, как это $("<div id='..., но я всегда получаю только заполнитель.

Что я делаю неправильно?

+0

Первая ошибка, всплывающие окна должны быть добавлены в страницу div. page div должен направить родителя всплывающего div. – Omar

+0

Сначала я начал с html-разметки, а затем запрограммировал ее. Когда я написал ожидаемую разметку, она отлично работает. Думаю, у attr есть какая-то уловка. Я также использую диалог, а не страницу (разметка работает отлично), и я изменил ее на 'help_label.closest ('div [data-role = dialog]'). Append ($ ("

")', но я все еще только –

+0

Ну, я не думаю, что его можно открыть всплывающее окно в диалоговом окне. – Omar

ответ

0

Основываясь на комментариях @Omar выше, я сделал немного больше копания.

Даже если вы можете конкретно писать HTML-разметку, отлично работает с диалогом, то attr("data-rel", "popup") и $.popup() есть что-то особенное в них, что останавливает эта форма работает, если нет родителя с data-role="content". Поскольку диалоги имеют data-role='main', вы не можете программно создавать всплывающие окна для использования в качестве подсказок в диалоговом окне.

В настоящее время я использовал использование атрибута title span, не являющегося якорем в моем тексте выше.

К сожалению, это не может быть передано в jquery, но добавление qtip делает эти работы намного лучше.

+0

вы можете создать свой собственный _tip_ без необходимости использовать какой-либо плагин. – Omar

+0

Я думал, что это будет большая работа с обрабатывать видовые экраны и прокрутки и т. д. qtip отлично справляется. Знаете ли вы о каких-либо хороших ресурсах о том, как это сделать, поскольку я просто беспокоюсь о проблеме валидации, а это значит, что мне, возможно, придется самим проверять вещи ... I подумал о создании qtips на лету. –

+0

Я сделал это раньше, это не окончательно, ему нужно некоторое усовершенствование. http://jsfiddle.net/Palestinian/7kG3k/ – Omar

Смежные вопросы