【问题标题】:Load javascripts on JQM data-role='page' onload在 JQM data-role='page' onload 上加载 javascripts
【发布时间】:2012-07-18 10:11:51
【问题描述】:

有什么方法可以在 JQM 的“页面”负载上运行 javascripts?我有一个应该出现在我的 JQM 页面的单个页面中的图表,但是如果我将它加载到 document.ready 上,它只会显示我是否刷新了那个特定的 JQM“页面”。如果我在任何其他“页面”上刷新,我的图表将不会加载。是否有某种onload("#myDiv") 函数可以解决这个问题?我所做的唯一其他解决方案是制作一个用户可以单击以加载图表的按钮,但似乎没有必要,应该能够自动加载它。

$(document).ready(function()
{
    $('#wordcloud').bind('pageinit', function() {
    alert("works!");
    });
})

上面的代码是不是有点接近?不过我没有收到警报。

还在 div 中的头部(内部和外部)document(ready)

中尝试了此代码
$('#wordcloud').live('pagebeforeshow', function() {
    alert(2);
});

【问题讨论】:

    标签: javascript jquery jquery-mobile


    【解决方案1】:

    正如doc 中所指出的,如果你想在jQueryMobile 页面加载上做一些事情,你必须使用$(document).bind('pageinit')

    页面初始化

    在初始化页面后触发。我们建议绑定到此事件而不是 DOM ready(),因为无论是直接加载页面还是将内容作为 Ajax 导航系统的一部分拉入另一个页面,这都会起作用。

    【讨论】:

    • 鉴于文档,我会说是(例如$( '#aboutPage' ).live( 'pageinit',function(event){ alert( 'This page was just enhanced by jQuery Mobile!' ); });。但在您的示例中,您必须删除$(document).ready
    • Uncaught TypeError: Object function () { alert(2); drawChart([[["data1",6],["data2",5],["data3",2]]]); } has no method 'split' 来自我的日志,文档内外都准备好了。
    • .live 而不是 .delegate 没有错误,但也没有结果。
    • 没有代码/标记很难调试,你能试着用你的代码设置一个小提琴吗? (jsfiddle.net)
    • 嗯,试过了。只是我需要大量的 javascript 文件。我会做一个简化的,只需要一些时间^^
    【解决方案2】:

    如果您想在用户每次导航到graphpage 时刷新图表;您应该在 pagebeforeshow 处理程序中为 graphpage 绑定刷新逻辑。

    请参阅JQM Events 文档中的Page change events 部分。

    【讨论】:

    • 干杯,会调查这个。找到一些关键字来搜索真是太好了:) 真的不知道从哪里开始。
    【解决方案3】:

    使用它,每次在 Jquery mobile 中加载#page 时触发一个事件

    $(document).on("pagebeforeshow","#dashboard",function(){
    
       alert("pagebeforeshow event fired - pagetwo is about to be shown");
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-15
      • 1970-01-01
      • 1970-01-01
      • 2012-12-22
      • 1970-01-01
      相关资源
      最近更新 更多