JQ基本功能

341 阅读3分钟

JQ基本功能

JQ是什么?

jQuery 是一个高效、精简并且功能丰富的 JavaScript 工具库。它提供的 API 易于使用且兼容众多浏览器,这让诸如 HTML 文档遍历和操作、事件处理、动画和 Ajax 操作更加简单。

获取元素

   $(document) //选择整个文档对象
   $('#myId') //选择ID为myId的网页元素
   $('div.myClass') // 选择class为myClass的div元素
   $('input[name=first]') // 选择name属性等于first的input元素
   $('tr:odd') //选择表格的奇数行
   $('#myForm :input') // 选择表单中的input元素
   $('div:visible') //选择可见的div元素
   $('div:gt(2)') // 选择所有的div元素,除了前三个
   $('div:animated') // 选择当前处于动画状态的div元素

链式操作

jQuery设计思想之三,就是最终选中网页元素以后,可以对它进行一系列操作,并且所有操作可以连接在一起,以链条的形式写出来,比如:

 $('div').find('h3').eq(2).html('Hello');
 分解开来,就是下面这样:
  $('div') //找到div元素
    .find('h3') //选择其中的h3元素
    .eq(2) //选择第3个h3元素
    .html('Hello'); //将它的内容改为Hello

元素的操作

  • 取值和赋值
   $('h1').html(); //html()没有参数,表示取出h1的值
   $('h1').html('Hello'); //html()有参数Hello,表示对h1进行赋值
  • 常见的取值和赋值函数如下
 .html() 取出或设置html内容
 .text() 取出或设置text内容
 .attr() 取出或设置某个属性的值
 .width() 取出或设置某个元素的宽度
 .height() 取出或设置某个元素的高度
 .val() 取出某个表单元素的值

元素的操作:移动

  • 第一种方法是使用.insertAfter(),把div元素移动p元素后面
 $('div').insertAfter($('p'));
  • 第二种方法是使用.after(),把p元素加到div元素前面
 $('p').after($('div'));

表面上看,这两种方法的效果是一样的,唯一的不同似乎只是操作视角的不同。但是实际上,它们有一个重大差别,那就是返回的元素不一样。第一种方法返回div元素,第二种方法返回p元素。你可以根据需要,选择到底使用哪一种方法。

  • 使用这种模式的操作方法,一共有四对
 .insertAfter()和.after():在现存元素的外部,从后面插入元素
 .insertBefore()和.before():在现存元素的外部,从前面插入元素
 .apendTo()和.append():在现存元素的内部,从后面插入元素
 .prependTo()和.prepend():在现存元素的内部,从前面插入元素

元素的操作:复制、删除和创建

jQuery还提供其他几种操作元素的重要方法

复制元素使用.clone()

删除元素使用.remove().detach()。两者的区别在于,前者不保留被删除元素的事件,后者保留,有利于重新插入文档时使用。

清空元素内容(但是不删除该元素)使用.empty()

  $('<p>Hello</p>');
  $('<li class="new">new list item</li>');
  $('ul').append('<li>list item</li>');

工具方法

  • 常见的几种方法啊
   $.trim() 去除字符串两端的空格。
 ​
   $.each() 遍历一个数组或对象。
 ​
   $.inArray() 返回一个值在数组中的索引位置。如果该值不在数组中,则返回-1。
 ​
   $.grep() 返回数组中符合某种标准的元素。
 ​
   $.extend() 将多个对象,合并到第一个对象。
 ​
   $.makeArray() 将对象转化为数组。
 ​
   $.type() 判断对象的类别(函数对象、日期对象、数组对象、正则对象等等)。
 ​
   $.isArray() 判断某个参数是否为数组。
 ​
   $.isEmptyObject() 判断某个对象是否为空(不含有任何属性)。
 ​
   $.isFunction() 判断某个参数是否为函数。
 ​
   $.isPlainObject() 判断某个参数是否为用"{}""new Object"建立的对象。
 ​
   $.support() 判断浏览器是否支持某个特性。

事件操作

 $('p').click(function(){
 ​
     alert('Hello');
 ​
   });

目前,jQuery主要支持以下事件

   .blur() 表单元素失去焦点。
 ​
   .change() 表单元素的值发生变化
 ​
   .click() 鼠标单击
 ​
   .dblclick() 鼠标双击
 ​
   .focus() 表单元素获得焦点
 ​
   .focusin() 子元素获得焦点
 ​
   .focusout() 子元素失去焦点
 ​
   .hover() 同时为mouseenter和mouseleave事件指定处理函数
 ​
   .keydown() 按下键盘(长时间按键,只返回一个事件)
 ​
   .keypress() 按下键盘(长时间按键,将返回多个事件)
 ​
   .keyup() 松开键盘
 ​
   .load() 元素加载完毕
 ​
   .mousedown() 按下鼠标
 ​
   .mouseenter() 鼠标进入(进入子元素不触发)
 ​
   .mouseleave() 鼠标离开(离开子元素不触发)
 ​
   .mousemove() 鼠标在元素内部移动
 ​
   .mouseout() 鼠标离开(离开子元素也触发)
 ​
   .mouseover() 鼠标进入(进入子元素也触发)
 ​
   .mouseup() 松开鼠标
 ​
   .ready() DOM加载完成
 ​
   .resize() 浏览器窗口的大小发生改变
 ​
   .scroll() 滚动条的位置发生变化
 ​
   .select() 用户选中文本框中的内容
 ​
   .submit() 用户递交表单
 ​
   .toggle() 根据鼠标点击的次数,依次运行多个函数
 ​
   .unload() 用户离开页面

使用.bind()可以更灵活地控制事件,比如为多个事件绑定同一个函数:

   $('input').bind(
 ​
     'click change', //同时绑定click和change事件
 ​
     function() {
 ​
       alert('Hello');
 ​
     }
 ​
   );

事件运行一次,这时可以使用.one()方法

   $("p").one("click", function() {
 ​
     alert("Hello"); //只运行一次,以后的点击不会运行
 ​
   });

.unbind()用来解除事件绑定

  $('p').unbind('click');
 //所有的事件处理函数,都可以接受一个事件对象(event object)作为参数,比如下面例子中的e:
  $("p").click(function(e) {
 ​
     alert(e.type); // "click"
 ​
   });
 //这个事件对象有一些很有用的属性和方法
 event.pageX //事件发生时,鼠标距离网页左上角的水平距离
 ​
 event.pageY //事件发生时,鼠标距离网页左上角的垂直距离
 ​
 event.type //事件的类型(比如click)
 ​
 event.which //按下了哪一个键
 event.data //在事件对象上绑定数据,然后传入事件处理函数
 ​
 event.target //事件针对的网页元素
 ​
 event.preventDefault() //阻止事件的默认行为(比如点击链接,会自动打开新页面)
 event.stopPropagation() //停止事件向上层元素冒泡

在事件处理函数中,可以用this关键字,返回事件针对的DOM元素

   $('a').click(function(e) {
 ​
     if ($(this).attr('href').match('evil')) { //如果确认为有害链接
 ​
       e.preventDefault(); //阻止打开
 ​
       $(this).addClass('evil'); //加上表示有害的class
 ​
     }
 ​
   })

有两种方法,可以自动触发一个事件。一种是直接使用事件函数,另一种是使用.trigger().triggerHandler()

  $('a').click();
  $('a').trigger('click');

特殊效果

 $('h1').show(); //展现一个h1标题
 常用的特殊效果
 .fadeIn() //淡入
 .fadeOut()// 淡出
 .fadeTo() //调整透明度
 .hide() //隐藏元素
 .show() //显示元素
 .slideDown() //向下展开
 .slideUp() //向上卷起
 .slideToggle() //依次展开或卷起某个元素
 .toggle() //依次展示或隐藏某个

在特效结束后,可以指定执行某个函数

 $('p').fadeOut(300, function() { $(this).remove(); });
 更复杂的特效,可以用.animate()自定义
  $('div').animate(
     {
       left : "+=50", //不断右移
       opacity : 0.25 //指定透明度
     },
     300, // 持续时间
     function() { alert('done!'); } //回调函数
   );
 .stop()和.delay()用来停止或延缓特效的执行。
 $.fx.off如果设置为true,则关闭所有网页特效。

分类:DOM 属性


获取和设置页面元素的 DOM 属性。

.addClass()( 为每个匹配的元素添加指定的样式类名

 类型: String
 为每个匹配元素所要增加的一个或多个样式名。
 $("p").addClass("myClass yourClass");
 这个方法通常和.removeClass()一起使用,用来切换元素的样式, 像这样
 $("p").removeClass("myClass noClass").addClass("yourClass");
 ​

.attr()( 获取匹配的元素集合中的第一个元素的属性的值 或 设置每一个匹配元素的一个或多个属性。 )

 .attr( attributeName )返回: String
 描述: 获取匹配的元素集合中的第一个元素的属性的值。
 添加的版本: 1.0.attr( attributeName )
 attributeName
 类型: String
 要获取的属性名称
 $('p').attr('class')
 ================================================================
 .attr( attributeName, value )返回: jQuery
 描述: 设置每一个匹配元素的一个或多个属性。
 添加的版本: 1.0.attr( attributeName, value )
 attributeName
 类型: String
 要设置值的属性名
 value
 类型: String,Number
 这个属性设置的值
 $('#greatphoto').attr('alt', 'Beijing Brush Seller');

.hasClass() ( 确定任何一个匹配元素是否有被分配给定的(样式)类。

 .hasClass( className )返回: Boolean
 描述: 确定任何一个匹配元素是否有被分配给定的(样式)类。
 添加的版本: 1.2.hasClass( className )
 className
 类型: String
 要查询的样式名。
 如果匹配元素上有指定的样式,那么.hasClass() 方法将返回 true , 即使元素上可能还有其他样式。 举个例子, 给上文的HTML加上下面的代码将返回 true:
 $('#mydiv').hasClass('foo')
 ​

.removeAttr( attributeName )( 为匹配的元素集合中的每个元素中移除一个属性(attribute)

 .removeAttr( attributeName )返回: jQuery
 描述: 为匹配的元素集合中的每个元素中移除一个属性(attribute)。
 添加的版本: 1.0.removeAttr( attributeName )
 attributeName
 类型: String
 要移除的属性名,从1.7版本开始,它可以是一个空格分隔的属性列表。

.removeClass() ( : 移除集合中每个匹配元素上一个,多个或全部样式。

 .removeClass( [className ] )返回: jQuery
 描述: 移除集合中每个匹配元素上一个,多个或全部样式。
 添加的版本: 1.0.removeClass( [className ] )
 className
 类型: String
 每个匹配元素移除的一个或多个用空格隔开的样式名。
 添加的版本: 1.4.removeClass( function(index, class) )
 function(index, class)
 类型: Function()
 一个函数,返回一个或多个将要被移除的样式名。index 参数表示在所有匹配元素的集合中当前元素的索引位置。class 参数表示原有的样式名。
 ======================================
 从所有匹配的每个元素中同时移除多个用空格隔开的样式类 ,像这样:
 $('p').removeClass('myClass yourClass')
 这个方法通常和 .addClass() 一起使用用来切换元素的样式, 像这样:
 $('p').removeClass('myClass noClass').addClass('yourClass');