jquery-mobile - 如果从外部拉入触发页面,为什么插件不会触发?

发布于 2024-12-17 10:37:27 字数 1337 浏览 1 评论 0原文

我需要一些帮助:

  • 我有三个独立的 JQM 页面 - page1.html、page2.html 和 page3.html。
  • 我将 .js 文件添加到所有页面,因此无论先加载哪个页面也会加载插件
  • 上的插件
  • page2.html 有一个名为 data-some="true" 的触发器来触发page2 添加了一个等待创建触发页面的侦听器,

如下所示:

(function($,window){
   $.widget("mobile.somesome",$.mobile.widget, {
      _create: function() { 
          var self = this;
          console.log("here we go");
          ...
          }
   });
   // initialize
   var trigger = $('div:jqmData(somesome="true")').live( 'pagecreate',function(event){ 
   if ($('html').data('somesome-init', 'Off')) {
        $('html').data('somesome-init', 'On')
        console.log("trigger fired");
        trigger.somesome();
        }
    });
}) (jQuery,this);

问题:
如果我直接加载 page2.html,一切都会正常工作 = 控制台记录触发器已被触发并且插件运行。

但是,如果我从 page1.html 或 page3.html 开始,然后调用 page2.html 希望插件会触发,我只会得到控制台“触发触发”,所以我检测到正确,但插件本身没有跑步。

有人能给我提示吗?

编辑 添加了一些示例:
- page2直接直接加载这个,颜色变成红色
- 通过 page1 从这里开始,然后转到 page2,没有任何反应
- 通过 page3 或者从这里开始并转到 page2,也没有任何反应

I need some help:

  • I have three separate JQM pages - page1.html, page2.html and page3.html.
  • I'm adding my .js files to all pages, so whichever page is loaded first also loads the plugin
  • page2.html has a trigger called data-somesome="true" to fire the plugin on page2
  • I have added a listener that waits for the trigger page to be created

Looks like this:

(function($,window){
   $.widget("mobile.somesome",$.mobile.widget, {
      _create: function() { 
          var self = this;
          console.log("here we go");
          ...
          }
   });
   // initialize
   var trigger = $('div:jqmData(somesome="true")').live( 'pagecreate',function(event){ 
   if ($('html').data('somesome-init', 'Off')) {
        $('html').data('somesome-init', 'On')
        console.log("trigger fired");
        trigger.somesome();
        }
    });
}) (jQuery,this);

Problem:
If I load page2.html directly, everything works as normal = console logs the trigger has been fired and the plugin runs.

However, if I start on either page1.html or page3.html and then call page2.html hoping the plugin would fire, I only get the console "trigger fired", so I'm detecting correct, but the plugin itself doesn't run.

Can anybody give me a hint?

EDIT
Added some examples:
- page2 direct load this directly, and the color changes to red
- via page1 start from here, then go to page2, nothing happens
- via page3 or start from here and go to page2, also nothing happens

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

っ左 2024-12-24 10:37:27

$(this) 让它工作......就像这样:

var trigger = $('div:jqmData(somesome="true")').live( 'pagecreate',function(event){ 
    if ($('html').data('some-init', 'Off')) {
        $('html').data('some-init', 'On')
            $( this ).somesome();
            }
     });

$(this) makes it work... like so:

var trigger = $('div:jqmData(somesome="true")').live( 'pagecreate',function(event){ 
    if ($('html').data('some-init', 'Off')) {
        $('html').data('some-init', 'On')
            $( this ).somesome();
            }
     });
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文