动态创建(先前初始化)后,JQuery无法以编程方式关闭弹出窗口

时间:2014-03-28 04:36:06

标签: jquery jquery-mobile mobile popup initialization

自从更新到JQM1.4.2后,我遇到了一个令我头疼的问题。如果我尝试关闭一个动态弹出窗口,我将从logcat服务到这个:“在初始化之前无法在弹出窗口上调用方法”

我知道我必须首先初始化东西

$("#merkel").popup();
$("#merkel").popup("open");

我是怎么做的:

我的HTML ..

<div data-role="popup" id="merkel" data-overlay-theme="b" data-theme="b">
    <ul data-role="listview" data-inset="true" style="width:180px;" data-theme="b">
        <li>another popup</li>
    </ul>
</div>

..然后用动态创建的html打开我的弹出窗口,其中包含listview splitbutton:

<a class='splitbutton' href='#merkel' data-rel='popup' data-transition='none'>Options</a>

..并使用特定于内容的代码动态填充菜单,因为每个listitem菜单都有自己的ID

$('#mainPage').on('touchend', ".splitbutton", function(e) {
    [fill div tags with specific atributes]
});

.. li-menu打开正确,特定的弹出窗口正在工作。一切都很好摘录了近距离功能。提交或取消辅助弹出窗口时,应关闭菜单。这将从辅助弹出功能调用:

$("[id^=merkel]").popup("close");

抛出以下错误:

“无法在初始化之前调用弹出窗口上的方法”

我尝试以不同的方式初始化弹出窗口,甚至是初始化并从自己的splitbutton侦听器函数中打开它们。什么都没有帮助。你有什么办法可以关闭菜单吗?

感谢您帮助我(和其他人)来这里!

1 个答案:

答案 0 :(得分:1)

尝试使用$("#merkel").popup("close");代替$("[id^=merkel]").popup("close"); 通常,附加功能不会更改应用html元素的 id 值,而是添加新属性来制作视图效果。因此,您的第一个 id 选项本身就可以使用。