如何在RequireJS中使用jQuery Mobile?

时间:2012-11-13 10:53:48

标签: javascript jquery jquery-mobile requirejs

<script type="text/javascript" src="/Scripts/jquery-1.8.2.min.js"></script>
<script type="text/javascript" src="/Scripts/jquery.mobile-1.2.0.min.js"></script>
<script type="text/javascript">
    console.log(jQuery.mobile !== undefined && 'good'); // prints 'good'!
</script>

<script type="text/javascript" data-main="/comp/pages/Index.js" src="/Scripts/require.js></script>

<script type="text/javascript">
    console.log(jQuery.mobile !== undefined && 'good'); // prints 'good'!
</script>

但是在我的Index.js中,jQuery.mobile消失了:

require([], function (view) {
    console.log(jQuery.mobile === undefined && 'undefined!'); // prints 'undefined!'
});

如何将mobile带回jQuery? (我显然不关心mobile中的某些 jQuery,但有兴趣将jQuery MobileRequireJS一起使用..只是为了制作它清楚..)

编辑1:

我尝试将require添加到Index.js:

console.log(jQuery.mobile === undefined && 'undefined!'); // prints 'undefined!'
require(['/Scripts/jquery-1.8.2.min.js', '/Scripts/jquery.mobile-1.2.0.min.js'],
    function (jQuery,jqm, view) {

    console.log(jQuery.mobile === undefined && 'undefined!'); // prints 'undefined!'
});

4 个答案:

答案 0 :(得分:1)

你是如何设法加载index.js的? RequireJS将.js添加到文件中,因此您应该使用/comp/pages/Index.js而不是/comp/pages/Index <script type="text/javascript" data-main="/comp/pages/Index" src="/Scripts/require.js></script>

{{1}}

答案 1 :(得分:0)

我假设您正确设置了RequireJS和jQuery。

在Index.js文件中,您需要需要jQuery和jQuery移动文件;例如:

require ("/Scripts/jquery");
require ("/Scripts/jquery.mobile");

我还要指出,您应该重命名文件,以便版本号不包含在文件名中 - 这样您就可以更新到新版本,而无需更改代码。

答案 2 :(得分:0)

尝试使用旧版本的jQuery Mobile。

jQuery 1.8.2不能与RequireJS一起使用,也可能是最新版本的jQuery Mobile。

您还必须确保在代码中需要jQuery和jQuery mobile JS文件。

我认为你应该查看这个帖子: How do I use requireJS and jQuery together?

罗布

答案 3 :(得分:0)

这是我的解决方法,因为最新的,我没有找到解决方案:我将全局jQuery对象/函数包含在HTML中的全局变量{{ 1}}:

myGlobalObject

然后我定义了一个新文件<link rel="stylesheet" href="content/jqm/jquery.mobile-min.css"/> <script src="content/jqm/jquery.min.js" type="text/javascript"></script> <script src="content/jqm/jquery.mobile-min.js" type="text/javascript"></script> <!--jQuery RequireJS issue workaround:--> <script type="text/javascript"> window.myGlobalObject = { jQuery:jQuery }; </script> ,它以jq.js熟悉的形式返回此全局对象:

RequireJS

每当我需要它时,我都会使用这个“中间”模块:

define(function(){
    return myGlobalObject.jQuery;
});