【问题标题】:jQuery Mobile - why bind defaults to mobileinit?jQuery Mobile - 为什么将默认值绑定到 mobileinit?
【发布时间】:2012-07-03 08:41:28
【问题描述】:

我正在使用 jQuery Mobile 并且想要关闭 Ajax 处理,因为它对我的页面做了一些时髦的事情。我开始了

<script src="jquery..."></script>
<script src="jquerymobile..."></script>
Some other stuff...
My own code:
<script src="config.js"></script>
My other javascript files...

我的想法是,您在顶部定义库之类的全局内容,在底部定义细节,以便稍后渲染它们并“覆盖”全局属性。例如,我自己的 CSS 会覆盖 jQuery 的 CSS,而我的 config 文件会这样做:

$.mobile.ajaxEnabled = false;

成功禁用了 ajax 处理。

但是,http://jquerymobile.com/demos/1.1.0/docs/api/globalconfig.html 表示要覆盖配置文件中的默认值之前 jQuery mobile 是src'd,带有一些时髦的符号:(来自页面)

<script src="jquery.js"></script>
<script src="custom-scripting.js"></script>
<script src="jquery-mobile.js"></script>

//custom-scripting.js
$(document).bind("mobileinit", function(){
  $.extend(  $.mobile , {
    foo: bar
  });
});

我的问题是,当您可以在 jquery-mobile.js 之后的配置文件中简单地包含单行 $.mobile.ajaxEnabled = false; 时,为什么要这样做?我认为这与 Javascript 的范式/风格有关,但我真的不明白你为什么要经历所有这些麻烦。

那么,哪个更好用,为什么?为什么文档推荐这种方式?

编辑: 而且文档还说 mobileinit 被立即调用,所以我应该可以安全地稍后在配置文件中修改 $.mobile object 对吧?

【问题讨论】:

  • 文档也有你的一半。 “或者,您可以使用对象属性表示法来设置它们。”但没有解释“mobileinit”。
  • 是的,我注意到了——正如你所说,它并没有解释为什么它仍然绑定到 mobileinit

标签: javascript jquery jquery-mobile styles


【解决方案1】:

我想我找到了原因。 jQuery mobile 初始化自己并定义(= 覆盖)$.mobile 变量,而不用担心它是否已经被首先设置。 这就解释了mobileinit 挂钩以允许对其进行修改。

【讨论】:

  • 你的意思是一旦包含脚本它就不一定会自行初始化?这是有道理的......虽然我的代码一直在工作,但我认为这样做是安全的 - 编辑:他们的页面说mobileinit 会立即触发,所以如果我稍后将我的变量设置在一个文件中,那应该没问题。如果 jQuery 稍后更改它设置默认值的方式可能不安全,但仍然是 hmmm
  • 哼。一旦包含脚本,它总是会自行初始化。只是它设置了$.mobile 变量,并不关心它之前是否已经定义过。
  • 但这不是说我以后可以只用$.mobile.ajaxEnabled = false; 修改它吗?为什么要绑定到移动端的 init 事件?
  • 以后可能为时已晚。 jQuery mobile 初始化了很多东西(绑定事件、HTML 增强)。我不确定它是如何工作的,但如果一切都已处理完毕,那么更改配置后将不起作用。
猜你喜欢
  • 1970-01-01
  • 2013-02-14
  • 2023-03-29
  • 1970-01-01
  • 2014-12-31
  • 2011-09-09
  • 1970-01-01
  • 2011-09-05
  • 1970-01-01
相关资源
最近更新 更多