[讨论]什么情况下不能用jQuery只能用原生的js

iiihavedone 2018-11-06 10:28:16
虽然不是做前端开发的,平时最多就用JQ,但是前端请假没来,我就临时做了一个开源js项目的二次开发。
过程中发现$.ajax() 在内部调用的时候会抛错,"Uncaught TypeError: $.ajax is not a function",这个错误好像我没有引入jQ一样,但是一切引用都正常,在最外层的function外面使用也正常。
只好先硬着头皮,用xhr对象实现了ajax,今天突然想到这个问题想请教一下大家,是不是jQuery在某些地方不能用。

还有比如 $.post("../url",{},function(data){
//这里用$(this)也取不到,只能在外面将 var _this = $(this) });

这两个问题是一样的吗


...全文
159 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
風灬雲 2018-11-06
  • 打赏
  • 举报
回复
1.JS中,所有function里面的this都指向引用该函数的对象,像你这个function没有引用对象,所以this指向window;
这种情况的解决方案,你说的算一种,在函数外面定义一个变量接收this;还可以有其他方法,比如把function改成ES6里面的箭头函数或者利用.bind(this)改变function里面的this指向

2.JQ只不过是原生JS的封装库;用不用意义不是很大,就像用原生JS开发,我们同样要学会自己封装;如果项目比较大,需要封装的代码多,为什么不直接使用别人封装好的呢?如果项目比较小,就几个页面,那就没必要了,JQ还是有那么多代码的,会影响加载速度,用到的方法自己封装就可以了
2018-11-06
  • 打赏
  • 举报
回复
js引用顺序是jq在前面吧,你具体的调用代码是什么样的, log一下$的值
iiihavedone 2018-11-06
  • 打赏
  • 举报
回复
引用 2 楼 Free_Wind22 的回复:
有可能和其他库冲突了,用jQuery.ajax试一下


难道是这个比较特殊,不能在里面用jQuery

(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
typeof define === 'function' && define.amd ? define(factory) :
(global.wangEditor = factory());
}(this, (function () { })))
iiihavedone 2018-11-06
  • 打赏
  • 举报
回复
引用 2 楼 Free_Wind22 的回复:
有可能和其他库冲突了,用jQuery.ajax试一下


如果是库冲突的话不应该在哪里调用都不管用吗,但是我在最外层调用是可以的
只有在方法内部调用会报错,只能用xhr对象
2018-11-06
  • 打赏
  • 举报
回复
有可能和其他库冲突了,用jQuery.ajax试一下
iiihavedone 2018-11-06
  • 打赏
  • 举报
回复
再贴个代码图

最外层


中间调用


将$.ajax()放最外层不会抛错


87,901

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧