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开发者)相关推荐

  1. 知识图谱实战应用6-基于知识推理进行知识补全的功能

    大家好,我是微学AI,今天给大家讲一下知识图谱实战应用6-基于知识推理进行知识补全的功能.基于知识推理进行知识补全,是指通过利用领域内已有的知识和信息,自动推断出缺失的知识或信息,从而进行知识的补全. ...

  2. html基础知识补全

    id同name嘅区别 ID的属性是最高级别的.而form中的name级别是比较低的.如果说我要取一个值的话用这两种方法来写.如下:    这是name的写法 window.document.form. ...

  3. ​NeurIPS 2020 | 面向张量分解知识图谱补全的对偶诱导正则

    简介 近年来,张量分解模型凭借模型简洁.计算速度快等优点在知识图谱补全任务上取得了令人瞩目的成就.但是,这些模型较易受到过拟合的影响,在性能上通常落后于其他类型的模型.为解决过拟合问题,包括 L2 正 ...

  4. 论文浅尝 | 基于开放世界的知识图谱补全

    Citation: Baoxu Shi and Tim Weninger (2017). Open-World Knowledge Graph Completion 6, AAAI 2018 传统的知 ...

  5. AAAI论文摘要【知识图谱补全】:A Survey on knowledge Graphs:Representation,Acquisition and Application

    A Survey on knowledge Graphs:Representation,Acquisition and Application 主要思路 全面回顾 知识图谱表示学习 知识图谱推理 全视 ...

  6. 阿里云开发大会——体验云效智能代码补全

    简介:5月29日阿里云开发大会「智能开发与高效运维」分论坛上,云效请来12位阿里巴巴开发运维领域专家,聚焦分享阿里云赋能开发者的系列工具和实践.现场动手训练营吸引近千位开发者体验云原生开发部署.代码安 ...

  7. CCKS 2018 | 最佳论文:南京大学提出 DSKG,将多层 RNN 用于知识图谱补全

    本文转载自公众号:机器之心. 选自CCKS 2018 作者:Lingbing Guo.Qingheng Zhang.Weiyi Ge.Wei Hu.Yuzhong Qu 机器之心编译 参与:Panda ...

  8. CCKS 2018 | 最佳论文:南京大学提出DSKG,将多层RNN用于知识图谱补全

    作者:Lingbing Guo.Qingheng Zhang.Weiyi Ge.Wei Hu.Yuzhong Qu 2018 年 8 月 14-17 日,主题为「知识计算与语言理解」的 2018 全国 ...

  9. Linux |奇怪的知识---complete命令---你不知道的命令参数补全---kubectl命令的参数补全

    前言: linux下有非常多的命令,其中有一些命令是比较冷门的,但比较有意思,比如,这个complete命令. complete命令定义命令或者脚本内的方法的参数自动补全内容是什么(例如,定义某个命令 ...

  10. AI比赛-三元组抽取:CCKS2023 开放环境下的知识图谱构建与补全评测任务一:指令驱动的自适应知识图谱构建

    任务描述 指令驱动的自适应知识图谱构建(InstructionKGC)是一种以用户指令为基础,实时更新和优化知识图谱结构的方法.这种方法的核心目标是根据用户需求调整知识图谱的表示,从而实现更准确.更高 ...

最新文章

  1. 零售行业O2O盛行 或成黑客窃取数据目标
  2. Leetcode155最小栈
  3. Linux 内核抓包功能实现基础(四) 手动查找邻居缓存填充MAC地址
  4. apache域名跳转
  5. wordpress致命错误怎么解决_pppoe错误是什么意思 pppoe错误怎么解决
  6. undertow 怎么创建线程_为什么很多SpringBoot开发者放弃了Tomcat,选择了Undertow
  7. LCS-最大公共子序列(DP问题)
  8. 深度学习之激活函数篇(Sigmoid、tanh、ReLU、PReLU)
  9. 第五次作业11111
  10. SAP在阿里云白皮书-第三章 SAP上阿里云场景介绍
  11. Linux时间子系统之一:clock source(时钟源)
  12. lede lcd4Linux,HLK7688A开发板,刷官方LEDE的LINKIT固件可以开机,但同样的uboot下,烧写原版代码自己编译的固件就会panic,无法识别文...
  13. VS2015 Visual Assist X破解版安装、禁用、卸载方法
  14. sumif单列求和_EXCEL条件求和函数SUMIF的几种常见用法
  15. 浅谈域名抢注和域名投资
  16. 深刻认识差模电压和共模电压
  17. c语言如何多核运行程序,对于多线程程序,单核cpu和多核cpu如何工作?
  18. iPad 开发技术与案例分析
  19. 最近整理的一些常见的面试题,面试大全,黑马程序员面试宝典题库---框架--篇
  20. jdk11手动安装jre

热门文章

  1. 如何装计算机网络驱动,网卡驱动怎么安装,手把手教你电脑网卡驱动怎么安装...
  2. 纸鸢|物联设备PLC梯形图编程
  3. python352的值为_Python3高级基础(2)
  4. Deep Layer Aggregation
  5. 校园消防vr模拟火灾逃生软件将火灾伤害全感官还原
  6. 电脑无法复制粘贴怎么办?
  7. 动名词做主语时的谓语动词问题
  8. web前端开发分享-css,js进阶篇
  9. 我来告诉你,一个草根程序员如何进入BAT
  10. 小学生c语言入门教程,小学生都看得懂的C语言入门(5): 指针