解决sea.js引用jQuery提示$ is not a function的问题

在使用sea.js的如下写法引用jQuery文件时,

//main.jsdefine(function(require,exports,module){
    var $ = require(‘jquery-3.1.0.min‘);
    $(‘#name‘).html(‘helloworld‘);
})

会报错,提示$ is not a function;

原因在于jQuery是默认支持AMD规范的,而sea.js是遵循CMD规范进行加载;这两种规范对外提供模块时的定义方法不一样:

// CMD
define(function(require, exports, module) {
    var a = require(‘./a‘)
    a.doSomething()
    // 此处略去 100 行
    var b = require(‘./b‘) // 依赖可以就近书写
    b.doSomething()
    // ...
})

// AMD 默认推荐的是
define([‘./a‘, ‘./b‘], function(a, b) { // 依赖必须一开始就写好
    a.doSomething()
    // 此处略去 100 行
    b.doSomething()
    // ...
})

jQuery对外提供模块时默认支持的是AMD规范,其写法为:

if ( typeof define === "function" && define.amd ) {
    define( "jquery", [], function() {
        return jQuery;
    } );
}

因此,如果想让jQuery支持CMD规范,则将以上代码修改为如下代码即可:

if ( typeof define === "function") {
    define(function(require,exports,module){
        return jQuery;
    });
}

其区别就在于define方法支持规范的判断,以及参数类型的不同。

时间: 2024-11-03 01:26:45

解决sea.js引用jQuery提示$ is not a function的问题的相关文章

js引用jquery问题

jquery本身就是一个JavaScript函数库,所以可以直接在js文件中写jquery代码. 但需要注意:jquery的使用需要引用官方的jquery.js文件. 关键:独立的js文件不需要引用任何jquery.js文件,只需要在相应的html网页中引用jquery.js和.js文件,jquery文件引用必须在.js文件之前.如下图: html文件: <script src="js/jquery-1.12.4.js"></script> //引用jquery

VS2012设置Js和Jquery提示

Visual Studio 2012本身都是已经支持Jquery/Javascript智能提示了,为什么还是在有些项目中不行呢?好像在2012的Razor 编辑器中,或者说是mvc项目中,是支持的很好的. 但是在普通的web项目中,js智能提示还不是自动,需要进行一些配置. 第一步: 打开 VS2012的工具-->选项 按照下面的图示,配置文本编辑器---javascript的智能提示项目.引用组设置为:web. 第三步,然后看看下面一个项目解析路径,~/Scripts/_references.

jQuery.noConflict()解决imgBox.js依赖jquery版本问题

jQuery提供两种点击图片放大效果出处 在使用imgbox.js是出现的jquery版本不兼容问题,之后了解到jQuery.noConflict()的用法 jQuery.noConflict()的存在只有一个目的:它允许你在同一个页面加载多个jQuery实例,尤其是不同版本的jQuery. //引用 <script src="~/Scripts/ssn/jquery.min.js"></script> <script type="text/ja

解决iscoll.js 与jquery的AJAX配合使用时会造成回弹的问题

问题造成原因是因为iscoll会通过DOM来获取滚动区域的高度,而AJAX异步请求会在其获取滚动区域后再次改变DOM结构,滚动区域的高度会发生变化会造成回弹.AJAX请求改为同步( 添加 async: false,)即可(个人理解) http://www.cnblogs.com/JreeyQi/p/4926348.html(转载)

seajs 引用 jquery 和 使用插件解决方法

在这里就不介绍 seajs 是啥了,直接来说说在 seajs 中使用jquery 和 jquery 插件遇到的问题: 首先:[index.html 为展示页][main.js为主体页 ][ jquery.js 为jquery库][plugins.js为jquery插件],它们各自是一个页面 index.html seajs.config({ base:'./static/js/', alias:{ 'main':'main' } }); //引用主体js seajs.use('main'); 事

解决ECSHOP中transport.js和jquery的冲突

ecshop模板兼容jquery问题, 一直是困扰开发人员的棘手问题,主要原因是 transprot.js  文件中, 大概 580行到590行之间,这个句用于格式化json,他重写了object的结构,导致于js框架冲突.冲突的原因是jquery给一个object增加了很多元素,那么在Object.prototype.toJSONString = function () 这个函数中 for (k in this) 语句中进行了无数次的循环,导致网页很卡,并且在IE中会报错. ecshop开发中

ecshop transport.js 和 jquery 冲突解决办法

您提供一个简单的解决transport.js 和 jquery 方法: 在 page_header.lbi 库文件中加入如下代码,注意操作顺序: 1.先导入transport.js  文件 {insert_scripts files='transport.js,utils.js'} 2.然后导入您网站使用的jquery文件 <script language="javascript" src="您的jquery存放路径"></script> 3

jQuery.form Ajax无刷新上传错误 (jQuery.handleError is not a function) 解决方案

今天,随着ajaxfileupload时间firebug财报显示,"jQuery.handleError is not a function"错误.因为一旦使用jQuery.form问题,我对照曾经的项目才发现,在这个项目中使用的jQuery是1.10.2的版本号,而曾经是使用的1.4.2.度娘一番之后,找到解决的方法:jQuery.handleError is not a function 报错原因是: handlerError仅仅在jquery-1.4.2之前的版本号中存在.jqu

ECSHOP中transport.js和jquery的冲突的简单解决办法

ECSHOP中transport.js和jquery的冲突的简单解决办法 一流资源网近日在ECSHOP网站加入了几个JS特效代码,在谷歌.火狐下正常,在各版本IE下都不常,左思不得其解. 最后才知道原来是"ECSHOP中transport.js和jquery的冲突" 因为通用头部文件中引用了 1 {insert_scripts files='transport.js,utils.js'} transport.js与jquery有冲突.原因不多讲.在网上找到一个最简单解决办法: 成功了,