【问题标题】:buttons not styled in jQM popup launched from code从代码启动的 jQM 弹出窗口中未设置样式的按钮
【发布时间】:2012-11-13 22:39:31
【问题描述】:

我正在使用 jQM 弹出窗口来“提醒”某些用户。例如,我发出$.ajax() 请求,如果响应有问题,我会弹出一个弹出窗口。 像这样的:

<div data-role="popup" id="popup">
    <p id="popupMsg"></p>
</div>

$("#popupMsg").html(msg);
$("#popup").popup({
    history:false,
    overlayTheme: "a"
}).popup('open');

一切正常,但如果我将弹出窗口更改为包含按钮,这样:

<div data-role="popup" id="popup">
    <p id="popupMsg"></p>
    <a href="#" data-role="button" data-rel="back" data-theme="c">Ok</a>
</div>

然后链接没有样式,它只会显示一个“Ok”链接。 如果我将弹出窗口移动到对话框中,那么按钮和所有内容都可以正常工作,但是由于我希望看到下面的页面,所以我想将其保留为弹出窗口。

我错过了什么吗?我看到了很多关于弹出窗口/对话框的问题,但它们都是指单击一个按钮来显示它们。 我使用 jquery-1.8.2 和 jquery.mobile-1.2.0。


编辑:我的情况的解决方案是弹出窗口div 必须进入页面div,而不是外部(作为对话框@ 987654326@ 会),像这样:

之前(错误)

<div data-role="page">
    <div data-role="content">
        ...page stuff...
    </div>
</div>
<div data-role="popup" id="popup">
    <p id="popupMsg"></p>
    <a href="#" data-role="button" data-rel="back" data-theme="c">Ok</a>
</div>

之后(右)

<div data-role="page">
    <div data-role="content">
        ...page stuff...
        <div data-role="popup" id="popup">
            <p id="popupMsg"></p>
            <a href="#" data-role="button" data-rel="back" data-theme="c">Ok</a>
        </div>
    </div>
</div>

【问题讨论】:

    标签: jquery-mobile popup


    【解决方案1】:

    您需要刷新 jQM 标记

    JS

    var msg = 'Look! A new button!';
    
    $("#popupMsg").html(msg);
    $("#popup").popup({
        history:false,
        overlayTheme: "a"
    }).popup('open');
    
    $('#okButton').button('refresh'); // you need to refresh jQM markup
    

    HTML

    <div data-role="page">
        <div data-role="content">
    
            <div data-role="popup" id="popup">
                <p id="popupMsg"></p>
                <a href="#" data-role="button" data-rel="back" data-theme="c" id="okButton">Ok</a>
            </div>
    
        </div>
    </div>
    

    【讨论】:

    • 其实不是这样的。这是因为弹出 div 必须在页面 div 内,而我将它放在外面(作为对话框 div)。从文档中并不清楚这是这样做的方法。无论如何,感谢您的小提琴,我找到了解决方案,所以我会接受它作为答案。谢谢。
    • 因为我遇到了同样的问题,斯蒂芬将弹出窗口放置在页面 div 内的解决方案对我不起作用,我尝试了你的建议。您会收到以下错误:未捕获的错误:在初始化之前无法调用按钮上的方法;这似乎足够合理。 JQM 没有找到这些按钮,它们仅作为链接存在于 DOM 中。我遵循的方法调用顺序是相同的: 1. popup() 2. popup("open") 3. $("#...").button("refresh")
    • 应用 el.trigger("create") 有效!! pop$.popup("打开"); pop$.trigger("create");
    猜你喜欢
    • 1970-01-01
    • 2014-08-25
    • 2015-03-09
    • 2014-10-13
    • 2016-09-10
    • 1970-01-01
    • 2016-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多