记录一下Jquery日常使用过程中的一些经验

2023-02-17 13:59:54 浏览数 (1)

好记性不如烂笔头

find()可以在所有后代元素里查找,而children()只会查找子代元素(不包括第二层级)。

not() 从匹配元素集合中删除元素。从包含所有段落的集合中删除 id 为 "selected" 的段落:

代码语言:javascript复制
$("p").not("#selected")

is() 方法用于查看选择的元素是否匹配选择器。

代码语言:javascript复制
$(selector).is(selectorElement,function(index,element))

jq在css的基础上扩展了很多选择器,尝试使用你会有很多意外的惊喜。

jq中的很多操作都是异步的,代码的顺序不代表操作的执行顺序。要求严格的话,需要通过指定操作的时间来控制执行顺序。

jq使用群组选择器进行事件监听时,可在事件的回调函数内使用this代表群组选择器选中的元素中触发事件的元素。

淡出、淡入的效果相当于延时版的显示和隐藏。

 jq动态生成html,不会绑定原有的事件,解决办法,动态添加事件:

代码语言:javascript复制
 $("body").on("click","#customer li",function (event) {
   //事件代码
 });

https://developer.mozilla.org/zh-CN/docs/Web/API/Element/scrollTo

对于this 指向的对象,在通常的调用过程中一般指向调用时所在的对象,例如onclick属性触发的时候,this指向dom所在的window对象。

contentDocument ,返回 iframe 生成的 document 对象。contentWindow 返回 iframe 生成的 window 对象。

trigger() ,方法触发被选元素的指定事件类型。https://www.cnblogs.com/jiangxiaobo/p/5830200.html

学习了一下promise对象和async、await关键字,学无止境,加油!

jq.index(),获取指定jq对象在jq对象集合里的索引位置。

Mutation Observer API 用来监视 DOM 变动。DOM 的任何变动,比如节点的增减、属性的变 动、文本内容的变动,这个 API 都可以得到通知。

dom节点的on属性添加事件会覆盖之前添加的,addEvent则只是追加。

hover([over,]out),一个模仿悬停事件(鼠标移动到一个对象上面及移出这个对象)的方法。这是一个自定义的方法,它为频繁使用的任务提供了一种“保持在其中”的状态。

js对象的方法被调用是this仍然指向的是调用时所在的对象,而不是对象自身。调用自身方法可使用对象的引用。

jq不支持事件捕获。需要使用捕获模式只能用js。通过addEventListen原生方法处理。冒泡是从内到外,捕获是从外到内触发事件。

onscroll是滚动条滚动,onwheel是鼠标滚轮的滚动事件。

post和get进行错误处理时可以使用error函数添加错误处理的回调;

zepto一个用法同JQ的js库。

JS 全屏Api:https://zhuanlan.zhihu.com/p/29177102

元素拖动事件:https://blog.csdn.net/qq_43915356/article/details/106222254

jq上传文件

代码语言:javascript复制
{
    // 不修改 Content-Type 属性,使用 FormData 默认的 Content-Type 值
     contentType: false,
     // 不对 FormData 中的数据进行 url 编码,而是将 FormData 数据原样发送到服务器
     processData: false,
}

$.ajax({
	type: "POST",
	url: location.pathname "?act=uploadsTask",
	data: index.data,
	contentType: false,
	cache: false,
	processData: false,
	datatype: "json",
	beforeSend: function () {
		$("#upload").text("上传..");
	},
	success: function (data) {

		data = JSON.parse(data);

		if (data.code != 1) {
			layer.msg(data.msg, {time: 2000});
		} else {
			layer.close(index.pane);
			$(".button").show();
			$("#modal").hide();
			layer.msg(data.msg, {time: 2000});
		}
	},
	complete: function () {

		$("#upload").text("开始上传");
		$("input[type=file]").val("");
		layer.close(indexs);
	},
	error: function () {
		layer.msg("出错了!", {time: 2000});
	}
});

jq js总结,基于传统使用思维

  1. 将同一大类的功能放在一个js文件里。
  2. 将文件内所有功能进行分类,封装在不同的对象里。
  3. 用jq把事件和封装的对象事件处理方法进行绑定。
  4. 最终可以避免事件处理和执行代码混乱,造成维护困难,代码阅读性极差。
  5. 这应该是一种编程组装的方法,基于此方法,结合模块化思想。完美

其实最终就是模块化,此处转向require.js

0 人点赞