HTMLed和JQuery Mobile弹出窗口(带有动态内容)

时间:2013-12-29 20:16:05

标签: javascript jquery-mobile

我正在将jQuery 1.10和JQM 1.4用于移动网络应用。对于用户语言系统,我使用轻量级框架nirus/HTMLed框架,该框架在文档就绪时初始化。

但是,我在jQuery弹出窗口中动态加载html文件(当它们触发时)。显然,HTMLed已经执行,不会替换(翻译)新添加的html中嵌入的标签。

任何静态html中的示例标签或动态添加的html:

<h1>label.page</h1>

用英文文本替换的示例JSON:

{"label.page" : "Hello World"}

是否有其他(javascript)方法可以在不刷新的情况下替换动态添加的标签?

除此之外,很好的框架和谢谢!

我让作者知​​道这篇文章。

编辑:

下面是一些额外的代码,以了解我打算做什么。

首先是HTML弹出窗口(多用途):

<!-- Popup -->
<div data-role="popup" id="popup-wrapper" class="ui-content">
    <div id="popup-container"></div>
</div>

我使用Hammer库进行多种手势:

Hammer('#someDiv').on("tap", function(event) {
    $('#popupContainer').load('someHTMLfile.html'); // Child div of the popup to load dynamic content
    $('#popupWrapper').popup("open", { transition: "pop" }); // the jQuery Popup opens
});

通过jQuery Mobile事件,我摆脱了#popupContainer中所有加载的html内容:

$('#popupWrapper').bind({
    popupafterclose: function(event, ui) {
        $(popupContainer).children().detach(); // clean up the #popupContainer to default
    }
});
顺便说一下,您的示例代码确实与jQuery事件(第三个块代码)一起使用,但没有使用Hammer事件(第二个块代码)。希望这能澄清这个问题。

编辑:

忘记添加示例html内容...

<div class="title">United States</div>
<div class="subtitle">Introduction</div>
<div class="mainContent">The United States of America (USA), commonly referred to as the United States (U.S.), America, or simply the States</div>

<div class="title">China</div>
<div class="subtitle">Population</div>
<div class="mainContent">1,351 billion (2012)</div>

<!-- etc. -->

2 个答案:

答案 0 :(得分:0)

在这里:http://jsfiddle.net/P5xf7/10/

注意:您必须在<h1>标记中添加ID。如果您可以为我们提供更多代码,那么我们可能会给您一个jQuery选择器来获取<h1>,而无需为其添加ID。您还需要删除点“。”在label.page之间。

来自小提琴的代码如下......

<h1 id="myHeader">Lorem ipsum dolor sit amet.</h1>

<script>    
    function loadHtmlIntoJqueryPopup(jsonString)
    {
        alert('About the change the header text...');
        //jsonString holds your: {"labelpage" : "Hello World"}
        //do whatever you do to load the html content into the window
        //turn the json into a js object
        var myObj = jQuery.parseJSON( jsonString );
        jQuery("#myHeader").text(myObj.labelpage);
    }
    loadHtmlIntoJqueryPopup('{"labelpage":"Hello World"}');
</script>

答案 1 :(得分:0)

根据您的建议添加了新功能。检查GitHub上的最新示例项目

http://nirus.github.io/HTMLed/