自从更新到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侦听器函数中打开它们。什么都没有帮助。你有什么办法可以关闭菜单吗?
感谢您帮助我(和其他人)来这里!
答案 0 :(得分:1)
尝试使用$("#merkel").popup("close");
代替$("[id^=merkel]").popup("close");
通常,附加功能不会更改应用html元素的 id 值,而是添加类或新属性来制作视图效果。因此,您的第一个 id 选项本身就可以使用。