jQuery学习笔记

date: 2015.10.30; modification:2015.11.12

目录:

1 jQuery 选择器

1.1 jQuery 元素选择器

jQuery 使用 CSS 选择器来选取 HTML 元素.

$("p") 选取 <p> 元素.

$("p.intro") 选取所有 class="intro" 的 <p> 元素.

$("p#demo") 选取所有 id="demo" 的 <p> 元素.

1.2 jQuery 属性选择器

jQuery 使用 XPath 表达式来选择带有给定属性的元素.

$("[href]") 选取所有带有 href 属性的元素.

$("[href='#']") 选取所有带有 href 值等于 "#" 的元素.

$("[href!='#']") 选取所有带有 href 值不等于 "#" 的元素.

$("[href$='.jpg']") 选取所有 href 值以 ".jpg" 结尾的元素.

1.3 jQuery CSS 选择器

jQuery CSS 选择器可用于改变 HTML 元素的 CSS 属性.

下面的例子把所有 p 元素的背景颜色更改为红色:

2 获取内容与属性

2.1 获取内容

三个简单实用的用于 DOM 操作的 jQuery 方法:

text() - 设置或返回所选元素的文本内容
html() - 设置或返回所选元素的内容(包括 HTML 标记)
val() - 设置或返回表单字段的值

示例:

$("#btn1").click(function(){
  alert("Text: " + $("#test").text());
});
$("#btn2").click(function(){
  alert("HTML: " + $("#test").html());
});

2.2 获取属性

示例:

$("button").click(function(){
  alert($("#w3s").attr("href"));
});

3 设置内容和属性

3.1 设置内容

示例:

$("#btn1").click(function(){
  $("#test1").text("Hello world!");
});
$("#btn2").click(function(){
  $("#test2").html("<b>Hello world!</b>");
});
$("#btn3").click(function(){
  $("#test3").val("Dolly Duck");
});

回调函数:

$("#btn1").click(function(){
  $("#test1").text(function(i,origText){
    return "Old text: " + origText + " New text: Hello world!
    (index: " + i + ")";
  });
});

$("#btn2").click(function(){
  $("#test2").html(function(i,origText){
    return "Old html: " + origText + " New html: Hello <b>world!</b>
    (index: " + i + ")";
  });
});

text(), html() 以及 val(), 同样拥有回调函数. 回调函数由两个参数: 被选元素列表中当前元素的下标, 以及原始(旧的)值. 然后以函数新值返回您希望使用的字符串.

3.2 设置属性

$("button").click(function(){
  $("#w3s").attr({
    "href" : "http://www.w3school.com.cn/jquery",
    "title" : "W3School jQuery Tutorial"
  });
});

回调函数:

$("button").click(function(){
  $("#w3s").attr("href", function(i,origValue){
    return origValue + "/jquery";
  });
});

4 添加与删除内容

4.1 添加

语法:

$("p").append("Some appended text.");    // 在之后添加
$("p").prepend("Some prepended text.");  // 在之前添加

示例:

function appendText()
{
    var txt1="<p>Text.</p>";               // 以 HTML 创建新元素
    var txt2=$("<p></p>").text("Text.");   // 以 jQuery 创建新元素
    var txt3=document.createElement("p");  // 以 DOM 创建新元素
    txt3.innerHTML="Text.";
    $("p").append(txt1,txt2,txt3);         // 追加新元素
}

语法:

$("img").after("Some text after");
$("img").before("Some text before");

示例:

function afterText()
{
    var txt1="<b>I </b>";                    // 以 HTML 创建新元素
    var txt2=$("<i></i>").text("love ");     // 通过 jQuery 创建新元素
    var txt3=document.createElement("big");  // 通过 DOM 创建新元素
    txt3.innerHTML="jQuery!";
    $("img").after(txt1,txt2,txt3);          // 在 img 之后插入新元素
}

append与after, prepend与before的区别, 在于前者是添加到被操作元素内部, 后者是添加新的元素.

4.2 删除

jQuery remove() 方法删除被选元素及其子元素.

示例:

$("#div1").remove();

jQuery remove() 方法也可接受一个参数, 允许您对被删元素进行过滤.

$("p").remove(".italic");

jQuery empty() 方法删除被选元素的子元素.

示例:

$("#div1").empty();

5 jQuery事件

$(document).ready(function(){
  $("button").click(function(){
    $("p").hide();
  });
});

click为事件, $("button").click(function() {..some code... } )中的function为定义的函数, 也可以从外部定义, 将函数名传入.

6 操作CSS

jQuery 拥有若干进行 CSS 操作的方法:

示例:

$("button").click(function(){
  $("h1,h2,p").addClass("blue");
  $("div").addClass("important");
});

添加多个类:

$("button").click(function(){
  $("#div1").addClass("important blue");
});

删除类:

$("button").click(function(){
  $("h1,h2,p").removeClass("blue");
});

toggle:

$("button").click(function(){
  $("h1,h2,p").toggleClass("blue");
});

css() 方法设置或返回被选元素的一个或多个样式属性.

获取属性:

$("p").css("background-color");

设置属性:

$("p").css("background-color","yellow");
$("p").css({"background-color":"yellow","font-size":"200%"});

7 jQuery效果

7.1 隐藏/显示

语法:

$(selector).hide(speed, callback);  // speed 单位为ms.
$(selector).show(speed, callback);
$(selector).toggle(speed, callback);

示例:

$("#hide").click(function(){
  $("p").hide();
});

$("#show").click(function(){
  $("p").show();
});

7.2 淡入/淡出

jQuery 拥有下面四种 fade 方法:

$(selector).fadeIn(speed, callback);
$(selector).fadeOut(speed, callback);
$(selector).fadeToggle(speed, callback);
$(selector).fadeTo(speed,opacity,callback); // opacity值介于0(全透)与1(全不透)之间

示例:

$("button").click(function(){
    $("#div1").fadeIn();
    $("#div2").fadeIn("slow");
    $("#div3").fadeIn(3000);
});

7.3 滑动方法

jQuery 拥有以下滑动方法:

$(selector).slideDown(speed,callback);
$(selector).slideUp(speed,callback);
$(selector).slideToggle(speed,callback);

7.4 动画

语法:

$(selector).animate({params},speed,callback);  // params(必需)参数定义形成动画的 CSS 属性

示例:

$("button").click(function(){
  $("div").animate({
    left:'250px',
    opacity:'0.5',
    height:'150px',
    width:'150px'
  });
}); 

使用相对值:
$("button").click(function(){
  $("div").animate({
    left:'250px',
    height:'+=150px',
    width:'+=150px'
  });
});

使用队列:
$("button").click(function(){
  var div=$("div");
  div.animate({height:'300px',opacity:'0.4'},"slow");
  div.animate({width:'300px',opacity:'0.8'},"slow");
  div.animate({height:'100px',opacity:'0.4'},"slow");
  div.animate({width:'100px',opacity:'0.8'},"slow");
});

7.5 jQuery stop() 方法

语法:

$(selector).stop(stopAll,goToEnd);

示例:

$("#stop").click(function(){
  $("#panel").stop();
});

可选的 stopAll 参数规定是否应该清除动画队列. 默认是 false, 即仅停止活动的动画, 允许任何排入队列的动画向后执行.

可选的 goToEnd 参数规定是否立即完成当前动画. 默认是 false.

7.6 Chaining方法链

$("#p1").css("color","red")
  .slideUp(2000)
  .slideDown(2000);

8 jQuery AJAX

jQuery load() 方法:

jQuery load() 方法是简单但强大的 AJAX 方法. load() 方法从服务器加载数据, 并把返回的数据放入被选元素中.

语法:

$(selector).load(URL,data,callback);

示例:

下面的例子会把文件 "demo_test.txt" 的内容加载到指定的 <div> 元素中:

$("#div1").load("demo_test.txt");

下面的例子把 "demo_test.txt" 文件中 id="p1" 的元素的内容,加载到指定的 <div> 元素中

$("#div1").load("demo_test.txt #p1");

可选的 callback 参数规定当 load() 方法完成后所要允许的回调函数。回调函数可以设置不同的参数:

示例:

下面的例子会在 load() 方法完成后显示一个提示框。如果 load() 方法已成功,则显示“外部内容加载成功!”,而如果失败,则显示错误消息:

$("button").click(function(){
  $("#div1").load("demo_test.txt",function(responseTxt,statusTxt,xhr){
    if(statusTxt=="success")
      alert("外部内容加载成功!");
    if(statusTxt=="error")
      alert("Error: "+xhr.status+": "+xhr.statusText);
  });
});