JQuery

JQuery简介

jQuery由美国人John Resig在2006年初创建,是继prototype之后又一个优秀的javaScript框架。
jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理HTML documents、events、实现动画效果,并且方便地为网站提供AJAX交互。

JQuery特点

jQuery 理念: 写得少, 做得多. 优势如下:
–轻量级
–强大的选择器
–出色的 DOM 操作的封装
–可靠的事件处理机制
–完善的 Ajax
–出色的浏览器兼容性

JQuery的使用方式

jq.gif

什么是DOM对象

当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)
通过 DOM,可以访问所有的 HTML 元素,连同它们所包含的文本和属性。可以对其中的内容进行修改和删除,同时也可以创建新的元素。
DOM对象,即是我们用传统的方法(javascript)获得的对象。
例:var dom=documnet.getElementById("id");

什么是JQuery对象

JQuery对象就是通过JQuery包装DOM对象后产生的对象。
JQuery对象可以使用JQuery中的所有方法,但不能使用DOM对象的方法。
例:var $jq=JQuery对象;

JQuery的选择器

1.基本选择器

根据id匹配对应的标签 得到的是单个标签的集合 - $("#id")

根据class匹配对应的标签 得到的是标签的集合 - $(".class")

根据element匹配对应的标签 得到的是标签的集合 - $("element")

根据 * 匹配对应的标签 得到的是所有标签的集合 - $("*")

根据每个选择器匹配对应的标签 得到的是对应选择器标签的集合 - $("#id",".class","element")

2.层次选择器(子标签,相邻标签,兄弟标签)

根据给定标签查询对应的所有指定的后代标签 得到的是指定后代标签的集合 - $(body,div)

根据给定标签查询对应的所有指定子标签 得到的是指定子标签的集合- $(body>div)

根据给定标签查询该标签的下一个标签 得到的是指定子标签的集合- $("#one"+div)

根据给定标签查询该标签的所有兄弟标签 得到的是兄弟子标签的集合- $("#one"~div)

3.过滤选择器
1.基本过滤选择器
g1.gif
2.内容过滤选择器
n1.gif
3.可见性过滤选择器

:hidden 选取所有不可见的标签
- display:none,type=hidden ,visible:hidden

:visible: 选取所有可见的标签

4.属性过滤选择器
属性过滤器.png
5.子元素过滤选择器
子过滤器.png
6.表单过滤选择器
18.png

59.png

JQuery对象与DOM对象之间的转换

JQuery操作节点的方法

创建节点 var nwpP =$("<p></p>");

append(content)向每个匹配的元素内部追加内容。
向所有段落中追加一些HTML标记。
HTML 代码:
<p>I would like to say: </p>
jQuery 代码:
$("p").append("<b>Hello</b>");

appendTo(content)把所有匹配的元素追加到另一个指定的元素元素集合中
把所有段落追加到ID值为foo的元素中。
HTML 代码:
<p>I would like to say: </p>
<div></div><div></div>
jQuery 代码:
$("p").appendTo("div");

attr(name);返回文档中第一个图像的src属性值。
HTML 代码:
<img src="test.jpg"/>
jQuery 代码:
$("img").attr("src");

prepend(content)向每个匹配的元素内部前置内容
向所有段落中前置一些HTML标记代码。
HTML 代码:
<p>I would like to say: </p>
jQuery 代码:
$("p").prepend("<b>Hello</b>");

prependTo(content)把所有匹配的元素前置到另一个、指定的元素元素集合中
把所有段落追加到ID值为foo的元素中。
HTML 代码:
<p>I would like to say: </p><div id="foo"></div>
jQuery 代码:
$("p").prependTo("#foo");

after(content)在每个匹配的元素之后插入内容。
在所有段落之后插入一些HTML标记代码。
HTML 代码:
<p>I would like to say: </p>
jQuery 代码:
$("p").after("<b>Hello</b>");

insertAfter(content)把所有匹配的元素插入到另一个、指定的元素元素集合的后面。
把所有段落插入到一个元素之后。与 $("#foo").after("p")相同
HTML 代码:
<p>I would like to say: </p><div id="foo">Hello</div>
jQuery 代码:
$("p").insertAfter("#foo");

before(content)在每个匹配的元素之前插入内容
在所有段落之前插入一些HTML标记代码。
HTML 代码:
<p>I would like to say: </p>
jQuery 代码:
$("p").before("<b>Hello</b>");

insertBefore(content)把所有匹配的元素插入到另一个、指定的元素元素集合的前面。
把所有段落插入到一个元素之前。与 $("#foo").before("p")相同。
HTML 代码:
<div id="foo">Hello</div><p>I would like to say: </p>
jQuery 代码:
$("p").insertBefore("#foo");

r1.png

从DOM中把所有段落删除
HTML 代码:
<p>Hello</p> how are <p>you?</p>
jQuery 代码:
$("p").remove();

把所有段落的子元素(包括文本节点)删除
HTML 代码:
<p>Hello, <span>Person</span> <a href="#">and person</a></p>
jQuery 代码:
$("p").empty();


coyp.png

克隆所有b元素(并选中这些克隆的副本),然后将它们前置到所有段落中。
HTML 代码:
<b>Hello</b><p>, how are you?</p>
jQuery 代码:
$("b").clone().prependTo("p");

创建一个按钮,他可以复制自己,并且他的副本也有同样功能。
HTML 代码:
<button>Clone Me!</button>
jQuery 代码:
$("button").click(function(){
$(this).clone(true).insertAfter(this);
});


replace.png

把所有的段落标记替换成加粗的标记。
HTML 代码:
<p>Hello</p><p>cruel</p><p>World</p>
jQuery 代码:
$("p").replaceWith("<b>Paragraph. </b>");结果:

把所有的段落标记替换成加粗标记
HTML 代码:
<p>Hello</p><p>cruel</p><p>World</p>
jQuery 代码:
$("<b>Paragraph. </b>").replaceAll("p");

attr(properties)为所有图像设置src和alt属性
HTML 代码:
<img/>
jQuery 代码:
$("img").attr({ src: "test.jpg", alt: "Test Image" });

attr(key, value)为所有图像设置src属性。
HTML 代码:
<img/>
<img/>
jQuery 代码:
$("img").attr("src","test.jpg");

removeAttr(name)将文档中图像的src属性删除
HTML 代码:
<img src="test.jpg"/>
jQuery 代码:
$("img").removeAttr("src");

css(name)访问第一个匹配元素的样式属性。
取得第一个段落的color样式属性的值。
jQuery 代码:
$("p").css("color");

css(properties)将所有段落的字体颜色设为红色并且背景为蓝色
jQuery 代码:
$("p").css({ color: "#ff0011", background: "blue" });

css(name, value)将所有段落字体设为红色
jQuery 代码:
$("p").css("color","red");

1.png

2.png
3.png
4.png

HTML方法代码
html()-取得第一个匹配元素的html内容
html(val)-设置每一个匹配元素的html内容

text()-取得所有匹配元素的内容
text(val)-设置所有匹配元素的文本内容

val()-获得第一个匹配元素的当前值。
获得单个select的值和多选select的值。
HTML 代码:
<p></p>
<select id="single">
<option>Single</option>
<option>Single2</option>
</select>
<select id="multiple" multiple="multiple">
<option selected="selected">Multiple</option>
<option>Multiple2</option>
<option selected="selected">Multiple3</option>
</select>
jQuery 代码:
$("p").append(
"<b>Single:</b> " + $("#single").val() +
" <b>Multiple:</b> " + $("#multiple").val().join(", ")
);
结果:
[ <p><b>Single:</b>Single<b>Multiple:</b>Multiple, Multiple3</p>]
描述:获取文本框中的值
HTML 代码:
<input type="text" value="some text"/>
jQuery 代码:
$("input").val();结果:
some text

val(val)-设置每一个匹配元素的值。
设定文本框的值
HTML 代码:
<input type="text"/>
jQuery 代码:
$("input").val("hello world!");

JQuery事件

load(fn)-在每一个匹配元素的load事件中绑定一个处理函数
如果绑定给window对象,则会在所有内容加载后触发,包括窗口,框架,对象和图像。如果绑定在元素上,则当元素的内容加载完毕后触发。

注意:只有当在这个元素完全加载完之前绑定load的处理函数,才会在他加载完后触发。如果之后再绑定就永远不会触发了。所以不要在$(document).ready()里绑定load事件,因为jQuery会在所有DOM加载完成后再绑定load事件。

ready(fn)-当DOM载入就绪可以查询及操纵时绑定一个要执行的函数
这个方法纯粹是对向window.load事件注册事件的替代方法。通过使用这个方法,可以在DOM载入就绪能够读取并操纵时立即调用你所绑定的函数,而99.99%的JavaScript函数都需要在那一刻执行。
请确保在 元素的onload事件中没有注册函数,否则不会触发$(document).ready()事件。
可以在同一个页面中无限次地使用$(document).ready()事件。其中注册的函数会按照(代码中的)先后顺序依次执行

在DOM加载完成时运行的代码,可以这样写:

jQuery 代码:
$(document).ready(function(){
  // 在这里写你的代码...
});描述:
使用 $(document).ready() 的简写,同时内部的 jQuery 代码依然使用
 $ 作为别名,而不管全局的 $ 为何。

jQuery 代码:
jQuery(function($) {
  // 你可以在这里继续使用$作为别名...
});

bind(type, [data], fn)-为每个匹配元素的特定事件绑定事件处理函数

jQuery还提供了一些绑定这些标准事件类型的简单方式,比如.click()用于简化.bind('click')。一共有以下这些:blur, focus, focusin, focusout, load, resize, scroll, unload, click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, error 。

hover(over, out)-一个模仿悬停事件(鼠标移动到一个对象上面及移出这个对象)的方法
overFunction鼠标移到元素上要触发的函数
outFunction鼠标移出元素要触发的函数

鼠标悬停的表格加上特定的类

jQuery 代码:
$("td").hover(
  function () {
    $(this).addClass("hover");
  },
  function () {
    $(this).removeClass("hover");
  }
);

toggle(fn, fn2, [fn3, fn4, ...])-每次点击后依次调用函数。
fnFunction第一数次点击时要执行的函数。
fn2Function第二数次点击时要执行的函数。
fn3, fn4, ... (可选)Function更多次点击时要执行的函数。

对表格的切换一个类

HTML 代码:
  <ul>
    <li>Go to the store</li>
    <li>Pick up dinner</li>
    <li>Debug crash</li>
    <li>Take a jog</li>
  </ul>
jQuery 代码:
$("td").toggle(
  function () {
    $(this).addClass("selected");
  },
  function () {
    $(this).removeClass("selected");
  }
);
对列表的切换样式

HTML 代码:
  <ul>
    <li>Go to the store</li>
    <li>Pick up dinner</li>
    <li>Debug crash</li>
    <li>Take a jog</li>
  </ul>
jQuery 代码:
    $("li").toggle(
      function () {
        $(this).css({"list-style-type":"disc", "color":"blue"});
      },
      function () {
        $(this).css({"list-style-type":"disc", "color":"red"});
      },
      function () {
        $(this).css({"list-style-type":", "color":"});
      }
    );
事件冒泡
事件冒泡.png
<div id="d1" onclick="alert('div')"> 
    <p onclick="alert('p')">
        <input type="button" value="按钮1" onclick="f1(event);"/>
    </p>
</div>
<script>
    window.onload=function(){
        //document.getElementById("d1").className="li";
        document.getElementsByTagName("div")[1].className="we";
        //document.getElementsByTagName("div")[0].className="li";
        
    }
    function f1(e) {
        alert("button");
        //取消事件冒泡
        //{"stopPropagation":function(){}}
        //若属性存在,在调用方法
        if(e.stopPropagation) {
            e.stopPropagation();
        } else {
            e.cancelBubble = true;
        }
    }
    //如何获取事件源
    function f2(e) {
        var obj = e.srcElement || e.target;
        console.log(obj);
    }
</script>
事件对象.png

移除事件.png
JQuery动画效果
d0.png
d1.png
d2.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,290评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,399评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,021评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,034评论 0 207
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,412评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,651评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,902评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,605评论 0 199
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,339评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,586评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,076评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,400评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,060评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,083评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,851评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,685评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,595评论 2 270

推荐阅读更多精彩内容

  • 一、样式篇 第1章 初识jQuery (1)环境搭建 进入官方网站获取最新的版本 http://jquery.co...
    凛0_0阅读 3,281评论 0 44
  • 第一章 jQuery简介 1-1 jQuery简介 1.简介 2.优势 3.特性与工具方法 1-2 环境搭建 进入...
    mo默22阅读 1,542评论 0 11
  • 一:认识jquery jquery是javascript的类库,具有轻量级,完善的文档,丰富的插件支持,完善的Aj...
    xuguibin阅读 1,630评论 1 7
  • jQuery基础(一)——样式篇 1-2环境搭建 1-3 jQuery HelloWorld体验 $(docume...
    croyance0601阅读 1,048评论 0 8
  • DOM创建节点及节点属性 通过JavaScript可以很方便的获取DOM节点,从而进行一系列的DOM操作。但实际上...
    阿r阿r阅读 987评论 0 9