JQuery语法

  • jQuery 语法是通过选取 HTML 元素,并对选取的元素执行某些操作
  • 基础语法: $(selector).action()
  • 美元符号定义 jQuery
  • 选择符(selector)”查询”和”查找” HTML 元素
  • jQuery 的 action() 执行对元素的操作
- $(this).hide() - 隐藏当前元素 
- $("p.test").hide() - 隐藏所有 class="test" 的 <p> 元素

JQuery选择器

  • jQuery 选择器允许您对 HTML 元素组或单个元素进行操作。
  • jQuery 选择器基于元素的 id、类、类型、属性、属性值等”查找”(或选择)HTML 元素。 它基于已经存在的 CSS 选择器,除此之外,它还有一些自定义的选择器。
  • Query 中所有选择器都以美元符号开头:$()。
  • 元素选择器
  • jQuery 元素选择器基于元素名选取元素。
  • $(“p”)
  • #id 选择器
  • jQuery #id 选择器通过 HTML 元素的 id 属性选取指定的元素。
  • .class 选择器
  • jQuery 类选择器可以通过指定的 class 查找元素。
  • $(“*”)
  • 选取所有元素
  • $(this)
  • 选取当前 HTML 元素
  • $(“p.intro”)
  • 选取 class 为 intro 的 <p> 元素
  • $(“p:first”)
  • 选取第一个<p> 元素
  • $(“ul li:first”)
  • 选取第一个 <ul> 元素的第一个 <li> 元素
  • $(“ul li:first-child”)
  • 选取每个<ul>元素的第一个<li>元素
  • $(“[href]”)
  • 选取带有 href 属性的元素
  • $(“a[target=’_blank’]”)
  • 选取所有 target 属性值等于 “_blank” 的 <a>元素
  • 选取所有 target 属性值不等于 “_blank” 的 <a> 元素
  • $(“:button”)
    - 选取所有 type=”button” 的<input> 元素 和 <button>元素
  • $(“tr:even”)
  • 选取偶数位置的 <tr> 元素
  • $(“tr:odd”)
  • 选取奇数位置的 <tr>元素

JQuery事件

  • jQuery 是为事件处理特别设计的。
  • 页面对不同访问者的响应叫做事件。
  • 事件处理程序指的是当 HTML 中发生某些事件时所调用的方法。
  • $(document).ready() 方法
  • 允许我们在文档完全加载完后执行函数
  • 鼠标事件
  • click() 方法是当按钮点击事件被触发时会调用一个函数
$("p").click(function(){
  $(this).hide();
});
  • dblclick() 方法当双击元素时触发 事件,或规定当发生 dblclick 事件时运行的函数
$("p").dblclick(function(){
  $(this).hide();
});
  • mouseenter() 当鼠标指针穿过元素时触发
$("#p1").mouseenter(function(){
        alert('您的鼠标移到了 id="p1" 的元素上!');
    });
  • mouseleave() 当鼠标指针离开元素时,会发生 mouseleave 事件。
$("#p1").mouseleave(function(){
        alert("再见,您的鼠标离开了该段落。");
    });
  • mousedown()当鼠标指针移动到元素上方,并按下鼠标按键时,会发生 mousedown 事件。
$("#p1").mouseup(function(){
        alert("鼠标在段落上松开。");
    });
  • hover()方法用于模拟光标悬停事件。
  • 当鼠标移动到元素上时,会触发指定的第一个函数(mouseenter);
  • 当鼠标移出这个元素时,会触发指定的第二个函数(mouseleave)。
$("#p1").hover(
    function(){
        alert("你进入了 p1!");
    },
    function(){
        alert("拜拜! 现在你离开了 p1!");
    }
);
  • focus()
  • 当元素获得焦点时,发生 focus 事件。
  • 当通过鼠标点击选中元素或通过 tab 键定位到元素时,该元素就会获得焦点。focus() 方法触发 focus 事件。
$("input").focus(function(){
          $(this).css("background-color","#cccccc");
    });
  • blur() 当元素失去焦点时,发生 blur 事件。

JQuery效果

隐藏与显示:
  • 隐藏和显示 HTML 元素:
$("#hide").click(function(){
      $("p").hide();
    });

    $("#show").click(function(){
      $("p").show();
    });
  • 语法:
  • $(selector).hide(speed,callback);
  • $(selector).show(speed,callback);
  • 可选的 speed 参数规定隐藏/显示的速度,可以取以下值:”slow”、”fast” 或毫秒。
  • 可选的 callback 参数是隐藏或显示完成后所执行的函数名称。
$("button").click(function(){
  $("p").hide(1000);
});
  • toggle() 方法来切换 hide() 和 show() 方法。
  • 语法:
  • $(selector).toggle(speed,callback);
  • 说明:就是显示和隐藏两种功能进行切换
淡入淡出:
  • fadeIn() 用于淡入已隐藏的元素。
  • 语法:
  • $(selector).fadeIn(speed,callback);
  • 可选的 speed 参数规定效果的时长。它可以取以下值:”slow”、”fast” 或毫秒。.
  • 可选的 callback 参数是 fading 完成后所执行的函数名称。
$("button").click(function(){
  $("#div1").fadeIn();//直接显示
  $("#div2").fadeIn("slow");//直接显示
  $("#div3").fadeIn(3000);//3s后显示
});
  • fadeOut() 方法用于淡出可见元素。
  • 语法:
  • $(selector).fadeOut(speed,callback); //参数和列子同淡入
  • fadeToggle() 方法可以在 fadeIn() 与 fadeOut() 方法之间进行切换。
  • 如果元素已淡出,则 fadeToggle() 会向元素添加淡入效果。
  • 如果元素已淡入,则 fadeToggle() 会向元素添加淡出效果。
  • 语法:
  • $(selector).fadeToggle(speed,callback);//就是两种状态相互切换举例和参数解释同淡入、、、这里不做解释
  • fadeTo() 方法允许渐变为给定的不透明度(值介于 0 与 1 之间)。
  • 语法:
  • $(selector).fadeTo(speed,opacity,callback);
  • 必需的 speed 参数规定效果的时长。它可以取以下值:”slow”、”fast” 或毫秒。
  • fadeTo() 方法中必需的 opacity 参数将淡入淡出效果设置为给定的不透明度(值介于 0 与 1 之间)。
  • 可选的 callback 参数是该函数完成后所执行的函数名称。
$("button").click(function(){
  $("#div1").fadeTo("slow",0.15);
  $("#div2").fadeTo("slow",0.4);
  $("#div3").fadeTo("slow",0.7);
});//就是把颜色变淡
滑动
  • slideDown() 方法用于向下滑动元素。
  • 语法:
  • $(selector).slideDown(speed,callback);
  • 可选的 speed 参数规定效果的时长。它可以取以下值:”slow”、”fast” 或毫秒。
  • 可选的 callback 参数是滑动完成后所执行的函数名称。
$("#flip").click(function(){
  $("#panel").slideDown();
});
  • slideUp() 方法用于向上滑动元素。
  • 语法:
  • $(selector).slideUp(speed,callback);//参数和举例参照向下滑动实例
  • slideToggle() 方法可以在 slideDown() 与 slideUp() 方法之间进行切换。
  • 如果元素向下滑动,则 slideToggle() 可向上滑动它们。
  • 如果元素向上滑动,则 slideToggle() 可向下滑动它们。
  • 语法:
  • $(selector).slideToggle(speed,callback);//向上、向下滑动进行切换
动画:
  • animate() 方法用于创建自定义动画。
  • 语法:
  • $(selector).animate({params},speed,callback);
  • 必需的 params 参数定义形成动画的 CSS 属性。
  • 可选的 speed 参数规定效果的时长。它可以取以下值:”slow”、”fast” 或毫秒。
  • 可选的 callback 参数是动画完成后所执行的函数名称。
$("button").click(function(){
      $("div").animate({left:'250px'});
});
  • animate() - 操作多个属性
可以用 animate() 方法来操作所有 CSS 属性吗?

是的,几乎可以!不过,需要记住一件重要的事情:当使用 animate() 时,必须使用 Camel 标记法书写所有的属性名,比如,必须使用 paddingLeft 而不是 padding-left,使用 marginRight 而不是 margin-right,等等。  
$("button").click(function(){
      $("div").animate({
        left:'250px',
        opacity:'0.5',
        height:'150px',
        width:'150px'
      });
    });
  • animate() - 使用相对值也可以定义相对值(该值相对于元素的当前值)。需要在值的前面加上 += 或 -=:
$("button").click(function(){
      $("div").animate({
        left:'250px',
        height:'+=150px',//点击效果会一致增加
        width:'+=150px'
      });
    });
  • animate() - 使用预定义的值
  • 您甚至可以把属性的动画值设置为 “show”、”hide” 或 “toggle”:
    $("button").click(function(){
    $("div").animate({
    height:'toggle'
    });
    });
  • animate() - 使用队列功能
  • Query 提供针对动画的队列功能。这意味着如果您在彼此之后编写多个 animate() 调用,jQuery 会创建包含这些方法调用的”内部”队列。然后逐一运行这些 animate 调用。
$("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");
});
停止动画:
  • stop() 方法用于停止动画或效果,在它们完成之前。
  • stop() 方法适用于所有 jQuery 效果函数,包括滑动、淡入淡出和自定义动画。
  • 语法:;
  • $(selector).stop(stopAll,goToEnd);
  • 可选的 stopAll 参数规定是否应该清除动画队列。默认是 false,即仅停止活动的动画,允许任何排入队列的动画向后执行。
  • 可选的 goToEnd 参数规定是否立即完成当前动画。默认是 false。
Callback方法:
  • Callback 函数在当前动画 100% 完成之后执行。
  • 许多 jQuery 函数涉及动画。这些函数也许会将 speed 或 duration 作为可选参数。
  • 例子:$(“p”).hide(“slow”)
  • speed 或 duration 参数可以设置许多不同的值,比如 “slow”, “fast”, “normal” 或毫秒。
$("button").click(function(){
      $("p").hide("slow",function(){
        alert("段落现在被隐藏了");
      });
    });
链(Chaining):
  • 通过 jQuery,可以把动作/方法链接在一起。
  • Chaining 允许我们在一条语句中运行多个 jQuery 方法(在相同的元素上)。
  • 语法:
  • $(“#p1”).css(“color”,”red”).slideUp(2000).slideDown(2000);//颜色先变红、再向上滑动、最后向下滑动

JQuery HTTML

获取内容和属性:
  • DOM = Document Object Model(文档对象模型)
  • text() - 设置或返回所选元素的文本内容
  • html() - 设置或返回所选元素的内容(包括 HTML 标记)
  • val() - 设置或返回表单字段的值
$("#btn1").click(function(){
    alert("Text: " + $("#test").text());
});
$("#btn2").click(function(){
 alert("HTML: " + $("#test").html());
});
$("#btn1").click(function(){
  alert("值为: " + $("#test").val());
});
  • attr() 方法用于获取属性值。
$("button").click(function(){
  alert($("#runoob").attr("href"));
});
设置内容和属性:
  • text()、html() 以及 val() 的回调函数
  • 回调函数有两个参数:被选元素列表中当前元素的下标,以及原始(旧的)值。然后以函数新值返回您希望使用的字符串。
$("#btn1").click(function(){
    $("#test1").text(function(i,origText){
        return "旧文本: " + origText + " 新文本: Hello world! (index: " + i + ")"; 
    });
});
  • attr() 方法也用于设置/改变属性值。
$("button").click(function(){
    $("#runoob").attr({
        "href" : "http://www.runoob.com/jquery",
        "title" : "jQuery 教程"
    });
});
  • attr() 的回调函数
  • 方法 attr(),也提供回调函数。回调函数有两个参数:被选元素列表中当前元素的下标,以及原始(旧的)值。然后以函数新值返回您希望使用的字符串。
$("button").click(function(){
  $("#runoob").attr("href", function(i,origValue){
    return origValue + "/jquery"; 
  });
});
添加元素:
  • append() - 在被选元素的结尾插入内容
  • prepend() - 在被选元素的开头插入内容
  • after() - 在被选元素之后插入内容
  • before() - 在被选元素之前插入内容
  • ppend() 和 prepend() 方法能够通过参数接收无限数量的新元素。可以通过 jQuery 来生成文本/HTML(就像上面的例子那样),或者通过 JavaScript 代码和 DOM 元素。
function appendText()
{
    var txt1="<p>文本。</p>";// 使用 HTML 标签创建文本
    var txt2=$("<p></p>").text("文本。");  // 使用 jQuery 创建文本
    var txt3=document.createElement("p");
    txt3.innerHTML="文本。"; // 使用 DOM 创建文本 text with DOM
    $("body").append(txt1,txt2,txt3); // 追加新元素
}
删除元素:
  • remove() - 删除被选元素(及其子元素)
  • empty() - 从被选元素中删除子元素
  • remove() 方法也可接受一个参数,允许您对被删元素进行过滤。该参数可以是任何 jQuery 选择器的语法。下面的例子删除 class=”italic” 的所有 <p> 元素:
$("p").remove(".italic");
$("#div1").empty();
获取并设置CSS类:
  • addClass() - 向被选元素添加一个或多个类
  • removeClass() - 从被选元素删除一个或多个类
  • toggleClass() - 对被选元素进行添加/删除类的切换操作
  • css() - 设置或返回样式属性
$("button").click(function(){
  $("h1,h2,p").addClass("blue");
  $("div").addClass("important");
});
CSS()方法:
  • css() 方法设置或返回被选元素的一个或多个样式属性。
  • 如需返回指定的 CSS 属性的值,请使用如下语法:
  • css(“propertyname”);//获取其值
  • 如需设置指定的 CSS 属性,请使用如下语法:
  • css(“propertyname”,”value”);//设置值
  • 如需设置多个 CSS 属性,请使用如下语法:
  • css({“propertyname”:”value”,”propertyname”:”value”,…});
尺寸:
  • width() 方法设置或返回元素的宽度(不包括内边距、边框或外边距)。
  • height() 方法设置或返回元素的高度(不包括内边距、边框或外边距)。
  • innerWidth() 方法返回元素的宽度(包括内边距)。
  • innerHeight() 方法返回元素的高度(包括内边距)。
  • outerWidth() 方法返回元素的宽度(包括内边距和边框)。
  • outerHeight() 方法返回元素的高度(包括内边距和边框)。

JQuery遍历

  • 下图展示了一个家族树。通过 jQuery 遍历,您能够从被选(当前的)元素开始,轻松地在家族树中向上移动(祖先),向下移动(子孙),水平移动(同胞)。这种移动被称为对 DOM 进行遍历。
  • <div> 元素是 <ul>的父元素,同时是其中所有内容的祖先。
  • <ul> 元素是 <li> 元素的父元素,同时是 <div> 的子元素
  • 左边的<li>元素是<span> 的父元素,<ul>的子元素,同时是 <div> 的后代。
  • <span>元素是<li> 的子元素,同时是 <ul><div> 的后代。
  • 两个<li>元素是同胞(拥有相同的父元素)。
  • 右边的 <li> 元素是 <b> 的父元素,<ul> 的子元素,同时是 <div>的后代。
  • <b> 元素是右边的 <li>的子元素,同时是<ul><div> 的后代。
祖先:(向上遍历 DOM 树 )
  • parent() 方法返回被选元素的直接父元素。
$(document).ready(function(){
  $("span").parent();
});
  • parents() 方法返回被选元素的所有祖先元素,它一路向上直到文档的根元素 (<html>)。
$(document).ready(function(){
  $("span").parents("ul");
});//所有 `<span> `元素的所有祖先,并且它是` <ul> `元素
  • parentsUntil() 方法返回介于两个给定元素之间的所有祖先元素。
$(document).ready(function(){
  $("span").parentsUntil("div");
});//返回介于 `<span> `与 `<div> `元素之间的所有祖先元素
后代:(向下遍历 DOM 树)
  • children() 方法返回被选元素的所有直接子元素。
  • 该方法只会向下一级对 DOM 树进行遍历。
$(document).ready(function(){
  $("div").children("p.1");
}); //返回类名为 "1" 的所有 <p> 元素,并且它们是 <div> 的直接子元素
  • find() 方法返回被选元素的后代元素,一路向下直到最后一个后代。
$(document).ready(function(){
  $("div").find("span");
});//返回属于 <div> 后代的所有 <span> 元素;如果是星号就表示所有子元素
同胞(siblings):
  • siblings() 方法返回被选元素的所有同胞元素
$(document).ready(function(){
  $("h2").siblings();
});//返回 <h2> 的所有同胞元素
  • next() 方法返回被选元素的下一个同胞元素。
  • nextAll() 方法返回被选元素的所有跟随的同胞元素。
  • nextUntil() 方法返回介于两个给定参数之间的所有跟随的同胞元素。
$(document).ready(function(){
  $("h2").nextUntil("h6");
});//返回介于 <h2> 与 <h6> 元素之间的所有同胞元素
  • prev(), prevAll() 以及 prevUntil() 方法的工作方式与上面的方法类似,只不过方向相反而已:它们返回的是前面的同胞元素(在 DOM 树中沿着同胞元素向后遍历,而不是向前)。
过滤:
  • first() 方法返回被选元素的首个元素。
$(document).ready(function(){
  $("div p").first();
});//选取首个 <div> 元素内部的第一个 <p> 元素
  • last() 方法返回被选元素的最后一个元素
  • eq() 方法返回被选元素中带有指定索引号的元素。
  • 索引号从 0 开始,因此首个元素的索引号是 0 而不是 1。
$(document).ready(function(){
  $("p").eq(1);
});//选取第二个 <p> 元素(索引号 1)
  • filter() 方法允许您规定一个标准。不匹配这个标准的元素会被从集合中删除,匹配的元素会被返回
$(document).ready(function(){
  $("p").filter(".url");
});//返回带有类名 "url" 的所有 <p> 元素
  • not() 方法返回不匹配标准的所有元素。
  • 提示:not() 方法与 filter() 相反。

AJAX

  • AJAX = 异步 JavaScript 和 XML(Asynchronous JavaScript and XML)。
  • load() 方法从服务器加载数据,并把返回的数据放入被选元素中
  • 语法:
  • $(selector).load(URL,data,callback);
  • 必需的 URL 参数规定您希望加载的 URL。
  • 可选的 data 参数规定与请求一同发送的查询字符串键/值对集合。
  • 可选的 callback 参数是 load() 方法完成后所执行的函数名称。
  • 可选的 callback 参数规定当 load() 方法完成后所要允许的回调函数。回调函数可以设置不同的参数:
  • responseTxt - 包含调用成功时的结果内容
  • statusTXT - 包含调用的状态
  • xhr - 包含 XMLHttpRequest 对象
$("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);
  });
});
  • get() 和 post() 方法用于通过 HTTP GET 或 POST 请求从服务器请求数据
  • $.get() 方法通过 HTTP GET 请求从服务器上请求数据。
  • 语法:
  • $.get(URL,callback);
  • 必需的 URL 参数规定您希望请求的 URL。
  • 可选的 callback 参数是请求成功后所执行的函数名。
  • $.post() 方法通过 HTTP POST 请求从服务器上请求数据。
  • 语法:
  • $.post(URL,data,callback);
  • 必需的 URL 参数规定您希望请求的 URL。
  • 可选的 data 参数规定连同请求发送的数据。
  • 可选的 callback 参数是请求成功后所执行的函数名。
$("button").click(function(){
$.post("/try/ajax/demo_test_post.php",
{
    name:"菜鸟教程",
    url:"http://www.runoob.com"
},
    function(data,status){
    alert("数据: \n" + data + "\n状态: " + status);
    });
});

JQuery其他

  • noConflict() 方法会释放会 $ 标识符的控制,这样其他脚本就可以使用它了。
    意义:
1.其他一些 JavaScript 框架包括:MooTools、Backbone、Sammy、Cappuccino、Knockout、JavaScript MVC、Google Web Toolkit、Google Closure、Ember、Batman 以及 Ext JS。
2.其中某些框架也使用 $ 符号作为简写(就像 jQuery),如果您在用的两种不同的框架正在使用相同的简写符号,有可能导致脚本停止运行。
$.noConflict();
jQuery(document).ready(function(){
  jQuery("button").click(function(){
    jQuery("p").text("jQuery 仍然在工作!");
  });
});//当然,您仍然可以通过全名替代简写的方式来使用 jQuery
  • 您也可以创建自己的简写。noConflict() 可返回对 jQuery 的引用,您可以把它存入变量,以供稍后使用。请看这个例子:
var jq = $.noConflict();
jq(document).ready(function(){
  jq("button").click(function(){
    jq("p").text("jQuery 仍然在工作!");
  });
});
  • 如果你的 jQuery 代码块使用$写,并且您不愿意改变这个快捷方式,那么您可以把 $ 符号作为变量传递给 ready 方法。这样就可以在函数内使用$号了 - 而在函数外,依旧不得不使用 “jQuery”:
$.noConflict();
jQuery(document).ready(function($){
  $("button").click(function(){
    $("p").text("jQuery 仍然在工作!");
  });
});