jQ知识补全(供已经入门jq开发者)
2019独角兽企业重金招聘Python工程师标准>>>
关于浏览器中的各高
页面可视区域的高:document.body.clientHeight
页面可视区域的高:document.body.offsetHeight
对象顶部距离页面顶部的偏移量:offsetTop
被滚动条卷入的高度:document.documentElement.scrollTop;
屏幕分辨率的高: window.screen.height;
屏幕高 - 任务栏的高: window.screen.availHeight;
jQuery图片懒加载
html 部分
// html
<img src="./img/pic_loading.jpg" class="img_delay" data-src="./img/img01.jpg">
src 属性放置加载时显示的图片
data-src 属性显示带有原始URL地址的图片
<script>
$(function () {
$(window).on('scroll',function () {//当页面滚动的时候绑定事件
$('.img_delay').each(function () {//遍历所有的img标签
if (checkShow($(this)) && !isLoaded($(this)) ){
// 需要写一个checkShow函数来判断当前img是否已经出现在了视野中
//还需要写一个isLoaded函数判断当前img是否已经被加载过了
loadImg($(this));//符合上述条件之后,再写一个加载函数加载当前img
}
})
})
function checkShow($img) { // 传入一个img的jq对象
var scrollTop = $(window).scrollTop(); //即页面向上滚动的距离
var windowHeight = $(window).height(); // 浏览器自身的高度
var offsetTop = $img.offset().top; //目标标签img相对于document顶部的位置
if (offsetTop < (scrollTop + windowHeight) && offsetTop > scrollTop) { //在2个临界状态之间的就为出现在视野中的
return true;
console.log("出现")
}
return false;
}
function isLoaded ($img) {
return $img.attr('data-src') === $img.attr('src'); //如果data-src和src相等那么就是已经加载过了
console.log("已经加载过了")
}
function loadImg ($img) {
setTimeout(function(){
$img.attr('src',$img.attr('data-src')); // 加载就是把自定义属性中存放的真实的src地址赋给src属性
console.log("加载")
},300)
}
});
</script>
select下拉框取值
function jsSelectToggle(){
$(".js-title-select select").change(function(){
var jsSelectToggleTwo = $(".js-select-toggle-two");
var jsSelectToggleOne = $(".js-select-toggle-one");
var val = $(this).val();
if(val==0){
jsSelectToggleOne.show();
jsSelectToggleTwo.hide();
}
if(val==1){
jsSelectToggleOne.hide();
jsSelectToggleTwo.show();
}
});
}
$("li").index(".one");
$(".one").index();
$("li").get(2);//获取第几个
$('div').attr('{'data':'num','age':'18'})
$('div').attr('class',function(index,val){
console.log(index,val)
return 'list'
})
$(".wrap").data('age',18);//两个参数就是存储数据
$(".wrap").data('age');//一个参数就是取得数据
$(".wrap").removeData('age');//删除数据
$(".checkbox").prop("checked")//是否选中(判断复选和单选框最好用prop。因为是实时改变状态的)
$(".checkbox").prop("disabled",true)//给input设置属性
$(".checkbox").removeProp("checked")//删除属性(这里也可以使用attr)
$(".checkbox").prop("checked",function(index,val){//回调函数
console.log(index,val);
return !val;
})
$("li").toggleClass(function(){
return active;
})
//动态渲染结构,循环列表并添加
function addList(){
var str = ' ';
for (var i = 0; i < 3; i++){
str += ‘<li></li>’
}
$(".wrap").html(str);
}
addList();
//jq设置单个和多个css
$("li").css("color","red")
$("li").css({"color":"red" , "border": "none"})
offset是相对于视窗大小偏移
$(".wrap").innerHeight()//当前css高度加上padding值
$(".wrap").height()//单纯css里面设置的高度
$(".wrap").outerHeight()//css高度加上padding值+border的值
$(".wrap").outerHeight(true)//css高度+padding+border的上下所有高度
$("input").inserBefore(".wrap")//把input插入到wrap的前面
在box外面包裹一层$(".box").wrap("<div class="wrapper"></div>");
删除box外面包裹的一层$(".box").unwrap('wrapper');
$("input").replaceWith("<div></div>")//把input替换为div,传一个参数
$("input").replaceWith($("ul"))//把ul拿过来匹配掉input
$("ul").replaceAll($("input"))//ul把input替换掉
remove()//不会留下任何东西
detach()//会把数据和绑定的事件留存下来
clone()//复制
$("li").filter('.first, :last')//匹配两个
end()//end() 方法结束当前链条中的最近的筛选操作,并将匹配元素集还原为之前的状态。即回到最近的一个
add()//add() 方法将元素添加到匹配元素的集合中。
$("li")//是jq对象上去调用
//jq工具类的调用
$.merge()//合并作用
arr1=[1,2,3]
arr2=[2,3,4]
$.merage(arr1,arr2)
arr2合并到arr1里面,并且返回的是arr1(合并后的)
//$.parseHTML
可以把HTML字符串解析成相应的DOM节点,有三个参数
$.parseHTML(string,context,true/false)
$.parseHTML("<h1></h1>",false)
返回一个数组,[div]
后面的true是判断是否可以嵌入script标签。
$.fn.extend//扩展插件
$.extend//合并对象,扩展插件
$.extend(true,最终合并到此的空对象{},obj1,obj2)
true代表深度克隆
如果有相同的属性值就会覆盖,如果没有就会保留着
机制:把obj2合并到obj1返回,然后在obj1合并到空对象{ }中返回。
$.extend(true,obj1,obj2)//这种就是直接把obj2合并到obj1中返回了
window.onload与document.ready()的区别
1、执行时间不同ready是等DOM结构加载完就行,window需要加载完所有资源
2、执行次数,ready可以执行多次,window只能注册一个
绑定事件
$('ul').on('click' , 'li' , function(){//只能通过点击li来触发函数
console.log(this);
})
面向对象编程开发,保存全局this,以便其他地方调用
把this先保存到self中去,不然,self.change改为this.change()会报错
绑定以及移除点击事件
如果要移除所有,就$(".box").off();
trigger主动触发事件
例如隔了2秒后主动触发了点击事件
自定义触发事件
$("div").toggle( true ),显示状态
$("div").toggle( false),隐藏状态
点击事件发生在down->up完成之后才完成点击事件
打印事件对象event
$(".box").on('mouseover' , function(e){
console.log(e)
})
$(window).on('scroll' , function(e){
console.log(e)
})
打印事件源对象e.target
$("body").on('click' , function(e){
console.log(e.target)
})
animate
var width = parseInt($(".box").css('width'))
$('button').on('click',function(){
width += 10;
$(".box").animate({
'width': width + 'px'
},1000,'ease',function(){
console.log(width)
});
})
延时执行
$('body').append("<h1 class='delay'>delay</h1>");
$('.delay').delay(4000).fadeOut();
工具类方法
console.log($.type('.delay'))//打印出string
console.log($.type([1,2]))//打印出array
console.log($.trim("asasd asda "))//去掉字符串两边的空格,中间的去不掉
//打印出asasd asda
console.log($.makeArray({0: 'a', 1: 'b', length: 2}))//类数组转换成数组
//["a","b"]去掉了length
var arr = [1,2,3]
console.log($.inArray(2,arr))//判断是否在数组里面,如果在,就会显示当前数值在数组里面的位置索引,要是不在就会返回-1
//返回1,位置1
arr.indexOf(1)//功能与上面一样,判断当前值是否在数组里面
//如果有返回索引值,如果不在就返回-1
$.noConflict()//把$权限交出
var myJq = $.noConflict();//权限交给myJq
$(".box")->变成myJq(".box")
$.extend(true,{},obj1,obj2)
先把obj1先合并到对象{}中,然后obj2合并到{},再obj1合并到{}
obj1和obj2都没改变,改变的是{},true代表的是否深度克隆
$.fn == $.prototype
$.extend()//是工具扩展,以后使用也是像工具一样使用.如$.add()
$.fn.extend()//是原型上扩展,以后使用是调用实例上的对象,扩展到自己原型链上去了,得拿对象里的方法,jq上没有的话就去原型链上去找.如:$("div").add()
$.extend扩展一个去掉左侧空字符的方法
$.extend({
leftTrime: function(str){
var reg = /^\s+/g;
return str.replace(reg,'')
}
})
$.leftTrime(' 的点点滴滴多 ')
扩展插件方法:复选框选中
$.fn.extend({
check: function(flag){
return this.each(function(){
this.checked = flag;
})
}
})
$('button').on('click',function(){
$('input').check(true);
})
$.Callbacks(flag)//执行队列回调函数
方法:
$.Callbacks.add()//添加函数
$.Callbacks.fire()//触发函数
$.Callbacks.remove()//移除函数
flag:
once->:只触发一次fire
unique->:添加相同函数,只触发一次
memory->:继续触发fire之后add的函数
stopOnFalse->:停止添加函数返回值为false的后续函数
例如:
function fn1(str){
console.log(str)
return false;
}
function fn2(num){
console.log(++num)
}
var callBack = $.Callbacks('memory')
callBack.add(fn2);
callBack.add(fn1);
callBack.remove(fn1);
callBack.fire('111111');
callBack.add(fn2);
延迟对象Defferd//相当于有状态的callBack
浏览网页,有些数据请求会存在几个状态
def.done 成功 ->对应的状态是def.notify()
def.fail 失败 ->def.reject()
def.progress 成功 ->def.resolve()
def.promise 只读的状态
$.when 在所有传入延迟对象的状态都为成功
不同状态对应的回调函数
function dfd(){
var d = $.Deferred();
d.notify()//模拟正在进行中的状态,打印出loading
d.reject()//模拟失败的状态,打印出error失败
d.resolve()//模拟成功的状态,打印出ok成功
return d;
//return d.progress();这里能把状态改为只读,本函数外面就拿不到状态了
}
//如果这里return d.progress();那么就拿不到状态值了
var der = dfd();
der.done(function(){
console.log('ok成功')
}).fail(function(){
console.log('error失败')
}).progress(function(){
console.log('loading')
});
$.ajax()
异步传输数据
开启本地服务器,下载wampserver
$.ajax({
type: 'post',//规定发送请求的方式,默认是get
url: './data.json',//请求地址
success: suc,
data: '',//data就是你要传的参数或者数值或需要请求的数据。。。string/object 发送请求的数据
context: ,//代表请求的上下文
async: ,//true/flase 代表 是否异步
cached: ,//true/flase 是否在浏览器缓存中缓存信息
dataType: ,//返回的数据类型,一般是json
crossDomain: ,//规定当前是否会跨域
jsonp: ,//当如果跨域的情况下,就不用ajax的请求了,jsonp请求的话,规定他请求完之后回调的名字是什么,比如callack/cb/...
jsonpCallback: ,//规定他请求完之后要执行的回调函数是什么
error: function(){
console.log("请求失败");
}
})
function suc(data){
console.log("请求成功");
}
怎么查看是否请求成功呢,看控制台的Network->XHR
jQuery源码-1
以jq为构造函数构造出来的实例,调用的时候要new一下
但是jq是无new方法,而且现在的this指向的是window
就不能以jQuery为构造函数了,那就以另一个函数为构造函数
所以怎么执行jQuery才能拿到对象呢?
以init为构造函数构造出的实例,怎么才能在jQuery里面返回呢?
那么就在jQuery函数中return 以init构造函数构造出的实例
既然jQuery自己不能是构造函数,但是它结果还是想拿构造函数出来的实例,显然return返回的以某个函数构造出来的实例
init函数主要是拿来为构造函数构造实例用的。jQuery里面很多都是基于原型上操作的
所以最后是
jq封闭到自己作用域下防止污染全局变量,不与其他类库冲突
转载于:https://my.oschina.net/parchments/blog/1525661
jQ知识补全(供已经入门jq开发者)相关推荐
- 知识图谱实战应用6-基于知识推理进行知识补全的功能
大家好,我是微学AI,今天给大家讲一下知识图谱实战应用6-基于知识推理进行知识补全的功能.基于知识推理进行知识补全,是指通过利用领域内已有的知识和信息,自动推断出缺失的知识或信息,从而进行知识的补全. ...
- html基础知识补全
id同name嘅区别 ID的属性是最高级别的.而form中的name级别是比较低的.如果说我要取一个值的话用这两种方法来写.如下: 这是name的写法 window.document.form. ...
- NeurIPS 2020 | 面向张量分解知识图谱补全的对偶诱导正则
简介 近年来,张量分解模型凭借模型简洁.计算速度快等优点在知识图谱补全任务上取得了令人瞩目的成就.但是,这些模型较易受到过拟合的影响,在性能上通常落后于其他类型的模型.为解决过拟合问题,包括 L2 正 ...
- 论文浅尝 | 基于开放世界的知识图谱补全
Citation: Baoxu Shi and Tim Weninger (2017). Open-World Knowledge Graph Completion 6, AAAI 2018 传统的知 ...
- AAAI论文摘要【知识图谱补全】:A Survey on knowledge Graphs:Representation,Acquisition and Application
A Survey on knowledge Graphs:Representation,Acquisition and Application 主要思路 全面回顾 知识图谱表示学习 知识图谱推理 全视 ...
- 阿里云开发大会——体验云效智能代码补全
简介:5月29日阿里云开发大会「智能开发与高效运维」分论坛上,云效请来12位阿里巴巴开发运维领域专家,聚焦分享阿里云赋能开发者的系列工具和实践.现场动手训练营吸引近千位开发者体验云原生开发部署.代码安 ...
- CCKS 2018 | 最佳论文:南京大学提出 DSKG,将多层 RNN 用于知识图谱补全
本文转载自公众号:机器之心. 选自CCKS 2018 作者:Lingbing Guo.Qingheng Zhang.Weiyi Ge.Wei Hu.Yuzhong Qu 机器之心编译 参与:Panda ...
- CCKS 2018 | 最佳论文:南京大学提出DSKG,将多层RNN用于知识图谱补全
作者:Lingbing Guo.Qingheng Zhang.Weiyi Ge.Wei Hu.Yuzhong Qu 2018 年 8 月 14-17 日,主题为「知识计算与语言理解」的 2018 全国 ...
- Linux |奇怪的知识---complete命令---你不知道的命令参数补全---kubectl命令的参数补全
前言: linux下有非常多的命令,其中有一些命令是比较冷门的,但比较有意思,比如,这个complete命令. complete命令定义命令或者脚本内的方法的参数自动补全内容是什么(例如,定义某个命令 ...
- AI比赛-三元组抽取:CCKS2023 开放环境下的知识图谱构建与补全评测任务一:指令驱动的自适应知识图谱构建
任务描述 指令驱动的自适应知识图谱构建(InstructionKGC)是一种以用户指令为基础,实时更新和优化知识图谱结构的方法.这种方法的核心目标是根据用户需求调整知识图谱的表示,从而实现更准确.更高 ...
最新文章
- 零售行业O2O盛行 或成黑客窃取数据目标
- Leetcode155最小栈
- Linux 内核抓包功能实现基础(四) 手动查找邻居缓存填充MAC地址
- apache域名跳转
- wordpress致命错误怎么解决_pppoe错误是什么意思 pppoe错误怎么解决
- undertow 怎么创建线程_为什么很多SpringBoot开发者放弃了Tomcat,选择了Undertow
- LCS-最大公共子序列(DP问题)
- 深度学习之激活函数篇(Sigmoid、tanh、ReLU、PReLU)
- 第五次作业11111
- SAP在阿里云白皮书-第三章 SAP上阿里云场景介绍
- Linux时间子系统之一:clock source(时钟源)
- lede lcd4Linux,HLK7688A开发板,刷官方LEDE的LINKIT固件可以开机,但同样的uboot下,烧写原版代码自己编译的固件就会panic,无法识别文...
- VS2015 Visual Assist X破解版安装、禁用、卸载方法
- sumif单列求和_EXCEL条件求和函数SUMIF的几种常见用法
- 浅谈域名抢注和域名投资
- 深刻认识差模电压和共模电压
- c语言如何多核运行程序,对于多线程程序,单核cpu和多核cpu如何工作?
- iPad 开发技术与案例分析
- 最近整理的一些常见的面试题,面试大全,黑马程序员面试宝典题库---框架--篇
- jdk11手动安装jre
热门文章
- 如何装计算机网络驱动,网卡驱动怎么安装,手把手教你电脑网卡驱动怎么安装...
- 纸鸢|物联设备PLC梯形图编程
- python352的值为_Python3高级基础(2)
- Deep Layer Aggregation
- 校园消防vr模拟火灾逃生软件将火灾伤害全感官还原
- 电脑无法复制粘贴怎么办?
- 动名词做主语时的谓语动词问题
- web前端开发分享-css,js进阶篇
- 我来告诉你,一个草根程序员如何进入BAT
- 小学生c语言入门教程,小学生都看得懂的C语言入门(5): 指针