李锋涛

石看纹理山看脉,人看志气树看材

  • 主页
所有文章 友链 关于我

李锋涛

石看纹理山看脉,人看志气树看材

  • 主页

jQuery浅谈(四)

2017-04-11

jQuery操作尺寸

1 height  设置或者获取高度

    带参数表示设置高度
    $(“img”).height(200);
    不带参数获取高度
    $(“img”).height();
    返回值是number类型(比如200),而使用$(“img”).css(“width”)返回的是字符串(比如200px)
2 width    设置或获取宽度,与高度操作功能一样

    带参数表示设置宽度
    $(“img”).width(200);
    不带参数获取宽度
    $(“img”).width();

jQuery 操作坐标值

1 offset   设置或获取元素相对于文档document位置        
    设置位置

    $(selector).offset({left:100, top: 150});
    获取位置
    $(selector).offset();
    注意:使用offset操作,如果元素没有设置定位(默认position:static),则会把position修改为relative.会修改left、top

2    position 获取相对于其最近的有定位的父元素的位置

    获取,返回值为对象:{left:num, top:num}        
    $(selector).position();
    注意:position方法只能获取,不能设置

3  scrollTop 设置或者获取垂直滚动条的位置

    有参数表示设置偏移,参数为数值类型
    $(selector).scrollTop(100);
    无参数表示获取偏移
    $(selector).scrollTop();

4  scrollLeft 设置或者获取水平滚动条的位置

    有参数表示设置偏移,参数为数值类型
    $(selector).scrollLeft(100);
    无参数表示获取偏移
    $(selector).scrollLeft();

jQuery事件机制

JavaScript中已经学习过了事件,但是jQuery对JavaScript事件进行了封装,增加并扩展了事件处理机制。jQuery不仅提供了更加优雅的事件处理语法,而且极大的增强了事件的处理能力。

jQuery事件的发展历程

    简单事件绑定>>bind事件绑定>>delegate事件绑定>>on事件绑定(推荐)
1 简单事件绑定
    click(handler)  单击事件
    mouseenter(handler)  鼠标进入事件
    mouseleaver(handeler) 鼠标离开事件
    scroll(handler)   滚动事件
    缺点: 一次只能绑定一次事件
2 bind 事件绑定    
    不推荐使用,jQuery1.7版本后被on取代
    绑定多个事件
    第一个参数:事件类型
    第二个参数:事件处理程序
    $("p").bind("click mouseenter", function(){
    事件响应方法
    });
    缺点:不支持动态创建出来的元素绑定事件。
3 delegate 事件绑定
     第一个参数:selector,要绑定事件的元素
     第二个参数:事件类型
     第三个参数:事件处理函数
    $(".parentBox").delegate("p", "click", function(){
    为 .parentBox下面的所有的p标签绑定事件
    });
    理解:为什么delegate支持动态绑定事件?原因是事件冒泡机制。因为事件时绑定到父元素上的,由子元素触发。

on 事件绑定(重点)

jQuery1.7之后,jQuery用on统一了所有事件的处理方法。
优势:最现代的方式,兼容zepto(移动端类似jQuery的一个库),强烈建议使用此。

 第一个参数:events,绑定事件的名称可以是由空格分隔的多个事件(标准事件或者自定义事件)
 第二个参数:selector, 执行事件的后代元素(可选),如果没有后代元素,那么事件将有自己执行。
第三个参数:data,传递给处理函数的数据,事件触发的时候通过event.data来使用(不常使用)
 第四个参数:handler,事件处理函数
$(selector).on(events[,selector][,data],handler);

例子:
 表示给$(selector)绑定代理事件,当必须是它的内部元素span才能触发这个事件,支持动态绑定
$(selector).on( "click",“span”, function() {});
表示给$(selector)绑定事件,并且由自己触发,不支持动态绑定(不使用代理)。

$(selector).on( "click", function() {});

事件解绑

1     unbind() 方法
    $(selector).unbind(); //解绑所有的事件
    $(selector).unbind(“click”); //解绑指定的事件
2  undelegate() 作用:解除事件绑定
    ( selector ).undelegate(); //解绑所有的delegate事件
    $( selector).undelegate( “click” ); //解绑所有的click事

off 作用:解除绑定

 解绑匹配元素的所有事件
$(selector).off();
解绑匹配元素的所有click事件
$(selector).off(“click”);
 解绑所有代理的click事件,元素本身的事件不会被解绑 
$(selector).off( “click”, “**” ); 

事件触发

简单事件触发
$(selector).click(); //触发 click事件
trigger方法触发事件
$(selector).trigger(“click”);
triggerHandler触发 事件响应方法,不触发浏览器行为
比如:文本框获得焦点的默认行为
$(selector).triggerHandler(“focus”);

jQuery 事件对象()

    事件类型
event.type     对象属性    
event.data     存储绑定事件时传递的附加数据
event.target   点了谁就是谁
event.currentTarget  当前DOM元素,等同于this
event.delegateTarget  代理对象
screenX和screenY   对应屏幕最左上角的值
offsetX和offsetY    点击的位置距离元素的左上角的位置
clientX和clientY   距离页面左上角的位置(忽视滚动条)
pageX和pageY    距离页面最顶部的左上角的位置(会计算滚动条的距离)
event.witch   鼠标按键类型,1=鼠标左键 2=鼠标中键 3=鼠标右键
event.keyCode  按下的键盘代码
event.stopPropagation()   阻止事件冒泡行为
event.preventDefault()  阻止浏览器默认行为
return false;

链式编程

链式编程原理:return this;
通常情况下,只有设置操作才能把链式编程延续下去。因为获取操作的时候,会返回获取到的相应的值,无法返回 this。


end(); // 筛选选择器会改变jQuery对象的DOM对象,想要回复到上一次的状态,并且返回匹配元素之前的状态。

隐式迭代

隐式迭代的意思是:在方法的内部会为匹配到的所有元素进行循环遍历,执行相应的方法;而不用我们再进行循环,简化我们的操作,方便我们调用。
如果获取的是多元素的值,大部分情况下返回的是第一个元素的值。
设置性操作的时候:设置的是所有的元素
获取性操作:获取的是第一个元素。

each 方法

    有了隐式迭代,为什么还要使用each函数遍历?

    大部分情况下是不需要使用each方法的,因为jQuery的隐式迭代特性。
如果要对每个元素做不同的处理,这时候就用到了each方法

作用:遍历jQuery对象集合,为每个匹配的元素执行一个函数
参数一表示当前元素在所有匹配元素中的索引号
参数二表示当前元素(DOM对象)
$(selector).each(function(index,element){});

多库共存

    我们知道jQuery占用了$这个标识符,如果引用的其他库也用到$这个标识符,这时候为了保证每个库都能正常使用,这时候就存在了多库共存的问题。
    后引入的$的会覆盖掉先引入的库中的$。
    $ === jQuery
    解决办法:
jQuery的$和jQuery是两个相同的变量,因此遇到多库共存的时候,可以让jquery交出$符的控制权,这个时候还是可以使用$.
console.log($);//function(selector, context){}
$.noConflict();//释放$的控制权
console.log($);{name:”zhangsan”,age:12}

jQuery(function () {
jQuery("div").html("我不是div的内容");
});
赏

谢谢你请我吃糖果

  • jQuery

扫一扫,分享到微信

微信分享二维码
浅谈RESTful
开发
© 2018 李锋涛
Hexo Theme Yilia by Litten
  • 所有文章
  • 友链
  • 关于我

tag:

  • AngularJs
  • css
  • css3
  • js
  • Gulp
  • html5
  • react
  • Vue
  • bootstrap
  • css 布局
  • github
  • hexo
  • git
  • html
  • jQuery
  • webpack
  • ES6
  • app
  • hexo+github

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

  • 阮一峰
很惭愧

菜鸟一枚
笔记只为自己参考学习