jQuery框架

jQuery框架

 jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理HTMLdocuments、events、实现动画效果,并且方便地为网站提供AJAX交互。
 jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择;并且支持链式编程;

jQuery文档
http://jquery.cuishifeng.cn/

jQuery选择器

jQuery的引用方式

<!-- 官方下载jQuery文件 在body最下方引用-->
<script src="jquery-3.2.1.js"></script>

<script>
    // 使用$("#id值") 找到id为d1的标签
    $("#d1")
</script>

jQuery和DOM对象的转换

  • jQuery对象[0] ===> Dom对象
  • Dom对象 ===> $(Dom对象)

1.HTML内容

<body>
    <div id="d1">jQuery和DOM对象的转换</div>
    
    <!--引用jQuery文件-->
    <script src="jquery-3.2.1.js"></script>
    
    <script>
    
    </script>
</body>

2.将jQuery对象转换为DOM对象直接取[0]个值

obj=$("#d1")
[div#d1]

obj[0]
<div id=​"d1">jQuery和DOM对象的转换</div>​

3.将DOM对象转换为jQuery对象直接加$()

dom=document.getElementById("d1")
<div id=​"d1">jQuery和DOM对象的转换​</div>​

$(dom)
[div#d1]

jQuery直接选择器

1.id选择器$("#id")

$("#i1")
[div#i1]

2.class选择器$(".c1")

$(".c1")
[div.c1, prevObject: jQuery.fn.init(1)]

$(".c1")[0]
<div class=​"c1">​123​</div>​

3.标签选择器$("div")

$("div")
(2) [div#d1, div.c1, prevObject: jQuery.fn.init(1)]

$("div")[1]
<div class=​"c1">​div标签二​</div>​

$("div")[0]
<div id=​"d1">​div标签一​</div>​

4.组合同时找到多个标签,所有class为c1的,id等于d1的,以及所有的a标签

$(".c1,#d1,a")
(5) [div#d1, div.c1, a, a, a, prevObject: jQuery.fn.init(1)]

jQuery层级选择器

1.找到div标签下的,子子孙孙的a标签 $("#i10 a")

<div id="i10">
    <div>
        <a href="">div内的a标签</a>
        <a href="">div内的a标签</a>
    </div>
    <a href="">a标签</a>
    <a href="">a标签</a>
    <a href="">a标签</a>
</div>

<!--分割线-->

// id i10下面子子孙孙所有的a标签
$("#i10 a")
(5) [a, a, a, a, a, prevObject: jQuery.fn.init(1)]

2.找到div标签下的儿子级别 a标签 $("#i10>a")

$("#i10>a")
(3) [a, a, a, prevObject: jQuery.fn.init(1)]

jQuery基础选择器first、last、eq(下标)

1.获取匹配的第一个元素$('标签:first')或最后一个元素$('标签:last')

<!--HTML 代码:-->
<ul>
    <li>list item 1</li>
    <li>list item 2</li>
    <li>list item 3</li>
    <li>list item 4</li>
    <li>list item 5</li>
</ul>

<!--分割线-->
//第一个元素
$('li:first');
[ <li>list item 1</li> ]

//最后一个元素
$('li:last')
[ <li>list item 5</li> ]

2.根据索引查找,从 0 开始计数

// html内容
<table>
  <tr><td>Value 0</td></tr>
  <tr><td>Value 1</td></tr>
  <tr><td>Value 2</td></tr>
</table>

<!--分割线-->
// 根据索引,查出下标为1的内容,并转换为DOM格式
$("tr:eq(1)")
[tr, prevObject: jQuery.fn.init(1)]

$("tr:eq(1)")[0]
<tr><td>Value 1</td></tr>

jQuery属性选择器

1.找到属性等于name的标签;name属性等于lisi的标签

// html内容
<div name="zhangsan">zhangsan</div>
<div name="lisi">lisi</div>

<!--分割线-->
// 具有name属性的所有标签
$('[name]')
(2) [div, div]
$('[name]')[0]
<div name=​"zhangsan">​zhangsan​</div>​

// name 属性为 "lisi" 的标签
$('[name="lisi"]')
[div]
$('[name="lisi"]')[0]
<div name=​"lisi">​lisi​</div>​

2.找到input标签中,type等于text属性的标签

// html内容
<input type="text">
<input type="text">
<input type="file">
<input type="password">

<!--分割线-->

$("input[type='text']")
(2) [input, input]

$("input[type='text']")[0]
<input type=​"text">​
$("input[type='text']")[1]
<input type=​"text">​
或
$(":text")
(2) [input, input]

3.找到所有不能编辑的input标签



<!--HTML-->
<input type="text"><br>
<input type="text" disabled value="这个是默认值"><br>

<!--分割线-->

$(":disabled")
[input]
$(":disabled")[0]
<input type=​"text" disabled value=​"这个是默认值">​

4.jQuery中checkbox获取标签值prop

<!--HTML-->
<input type="checkbox" value="true">

<!--分割线-->
// 获取值
$(":checkbox").prop("checked")
true

// 修改值
$(":checkbox").prop("checked",false)

jQuery的筛选器

就是jQuery对象点(.)方法;前面是 选择器.方法,即时筛选器;

基本常用的筛选器

$(this).next()        // 当前选择器的 下一个标签
$(this).nextAll()     // 找到当前标签 下面所有的标签(同一标签登记内)
$(this).nextUntil("#i1")   //  找到当前标签 下面所有的标签,到id等于i1的为止

$(this).prev()        // 当前选择器的 上一个标签
$(this).prevAll()     // 找到当前标签 上面所有的标签(同一标签登记内)
$(this).prevUntil("#i1")    //  找到当前标签 上面所有的标签,到id等于i1的为止

$(this).parent()      // 当前选择器的 父级标签

$(this).children()    // 当前选择器的 所有儿子标签

$(this).text()        // 当前标签的内容
$(this).html()        // 当前标签的html内容

$(this).siblings()    // 获取当前标签的所有 兄弟标签(不包括自己)

$(this).find(".c1")   // 在当前标签的  下级标签的子子孙孙中find查找 class 为c1的标签

$("#i1").addClass("hide")       // 给id为i1的标签,添加 hide 属性
$("#i1").removeClass("hide")    // 给id为i1的标签,移除 hide 属性

$("#i1").hasClass("hide")       // 检查id为i1的标签是否具有 hide 属性,有返回true 否则返回 false

$("#i1").toggleClass("hide")    // 检查id为i1的标签是否具有 hide 属性,有则去除,没有则添加上

jQuery文本操作

div或a或span标签内容操作

HTML内容

<div id="i1">divdiv
    <a href="">aaaaaa</a>
</div>

文本操作

// 获取文本内容text不带标签;
$("#i1").text()
"divdiv
    aaaaaa
"

// 获取文本内容html带标签;
$("#i1").html()
"divdiv
    <a href="">aaaaaa</a>
"

// 设置文本内容html可以设置标签;
$("#i1").html("<p>pppp</p>")
[div#i1]

// 设置文本内容text不可以设置标签;
$("#i1").text("<p>pppp</p>")
[div#i1]

input或select或textarea标签内容操作

HTML内容

<input id="i2" type="text" value="111">

input标签的文本操作val

//获取input标签内的内容;
$("#i2").val()
"111"

//设置input标签内的内容;
$("#i2").val("222")
[input#i2]

$("#i2").val()
"222"

文本操作的CSS类样式操作

方法:

$("#i1").addClass("hide")       // 给id为i1的标签,添加 hide 属性
$("#i1").removeClass("hide")    // 给id为i1的标签,移除 hide 属性
$("#i1").toggleClass("hide")    // 检查id为i1的标签是否具有 hide 属性,有则去除,没有则添加上

// 对单个css 属性值进行操作
$("#i1").css("color","red")     // 给id为i1的标签,颜色设置为  red;

HTML内容

<style>
    .hide{
        display: none;
    }
</style>

<input id="i1" type="button" value="开关">
<div class="c1 hide">存在</div>


<script src="jquery-3.2.1.js"></script>
<script>
    $("#i1").click(function () {
    // 方法一:使用if 判断hasClass方法检查有没有 hide属性
    //    if($(".c1").hasClass("hide")){
    //        $(".c1").removeClass("hide");
    //    }else {
    //        $(".c1").addClass("hide");
    //    }
    // 方法二:检查class 为c1的标签是否具有 hide 属性,有则去除,没有则添加上
        $(".c1").toggleClass("hide");
    })
</script>

位置处理offset指定标签在HTML中的坐标

汉朝天数当桓灵,炎炎红日将西倾。奸臣董卓废少帝,刘协懦弱魂梦惊。曹操传檄告天下,诸侯奋怒皆兴兵。议立袁绍作盟主,誓扶王室定太平。温侯吕布世无比,雄才四海夸英伟。护躯银铠砌龙鳞,束发金冠簪雉尾。参差宝带兽平吞,错落锦袍飞凤起。龙驹跳踏起天风,画戟荧煌射秋水。出关搦战谁敢当?诸侯胆裂心惶惶。踊出燕人张冀德,手持蛇矛丈八枪。虎须倒竖翻金线,环眼圆睁起电光。酣战未能分胜败,阵前恼起关云长。青龙宝刀灿霜雪,鹦鹉战袍飞蛱蝶。马蹄到处鬼神嚎,目前一怒应流血。枭雄玄德掣双锋,抖擞天威施勇烈。三人围绕战多时,遮拦架隔无休歇。喊声震动天地翻,杀气迷漫牛斗寒。吕布力穷寻走路,遥望家山拍马还。倒拖画杆方天戟,乱散销金五彩幡。顿断绒绦走赤兔,翻身飞上虎牢关。

代码实现:

<body>
<div  id="i1" style="height: 100px;overflow: auto; 100px">
    <p>汉朝天数当桓灵,炎炎红日将西倾。奸臣董卓废少帝,刘协懦弱魂梦惊。曹操传檄告天下,诸侯奋怒皆兴兵。议立袁绍作盟主,誓扶王室定太平。温侯吕布世无比,雄才四海夸英伟。护躯银铠砌龙鳞,束发金冠簪雉尾。参差宝带兽平吞,错落锦袍飞凤起。龙驹跳踏起天风,画戟荧煌射秋水。出关搦战谁敢当?诸侯胆裂心惶惶。踊出燕人张冀德,手持蛇矛丈八枪。虎须倒竖翻金线,环眼圆睁起电光。酣战未能分胜败,阵前恼起关云长。青龙宝刀灿霜雪,鹦鹉战袍飞蛱蝶。马蹄到处鬼神嚎,目前一怒应流血。枭雄玄德掣双锋,抖擞天威施勇烈。三人围绕战多时,遮拦架隔无休歇。喊声震动天地翻,杀气迷漫牛斗寒。吕布力穷寻走路,遥望家山拍马还。倒拖画杆方天戟,乱散销金五彩幡。顿断绒绦走赤兔,翻身飞上虎牢关。</p>
</div>
<script src="jquery-3.2.1.js"></script>
</body>

获取当前div在overflow滚轮所在的位置:

$("div").scrollTop()
792

// 获取#i1标签的位置
$("#i1").offset()
{top: 8, left: 8}

// 获取#i1标签的左位置
$("#i1").offset().left
8

// 获取#i1标签的头位置
$("#i1").offset().top
8

获取当前页面滚轮所在的位置,window浏览窗口:

$(window).scrollTop()
900

// 设置滚轮所在位置
$(window).scrollTop(0)
0

文档操作

方法:

// temp 为拼接的 li标签
var temp = "<li>" + v + "</li>";

$("#u1").append(temp);            append 将值追加到 指定标签儿子的最下方
$("#u1").prepend(temp);           prepend 将值追加到 指定标签儿子的最上方
$("#u1").after(temp);             after 将值添加到 指定标签的兄弟标签下方
$("#u1").before(temp);            before 将值添加到 指定标签的兄弟标签上方

$("#u1 li").eq(index).empty();    empty 只清空内容
$("#u1 li").eq(index).remove();   remove 清空整个指定的标签

$("#u1 li").eq(index).clone();    clone 根据指定的索引将 标签 clone一份

HTML内容

<input id="t1" type="text">
<input id="a1" type="button" value="添加">
<ul id="u1">
    <li>1</li>
    <li>2</li>
</ul>

jQuery的内容

<script src="jquery-3.2.1.js"></script>
<script>
    $("#a1").click(function () {
        var v=$("#t1").val();

        var temp = "<li>" + v + "</li>";
        // append 将值追加到 指定标签儿子的最下方
        // $("#u1").append(temp);

        // prepend 将值追加到 指定标签儿子的最上方
        // $("#u1").prepend(temp);

        // after 将值添加到 指定标签的兄弟标签下方
        // $("#u1").after(temp)

        // before 将值添加到 指定标签的兄弟标签上方
        $("#u1").before(temp)
    })
    
    
    $("#d1").click(function () {
        var index=$("#t1").val();
        // remove 清空整个指定的标签
        // $("#u1 li").eq(index).remove();
        
        // empty 只清空内容
        $("#u1 li").eq(index).empty();
    });

    $("#f1").click(function () {
        var index=$("#t1").val();
        // 根据索引克隆指定的标签
        var v = $("#u1 li").eq(index).clone();
        $("#u1").append(v);
    })
</script>

属性操作,自定义属性

语法:

$("#i1").attr("id")             // 获取 id 为 i1的标签,获取其id值
$("#i1").attr("name","value")   // 获取 id 为 i1的标签,设置属性为name 值为 value
$("#i1").removeAttr("value")    // 获取 id 为 i1的标签,删除其 Value值

$("#i1").prop                   // 专门用于chekbox,radio做操作

给标签加上指定属性:

$("#i1")
[input#i1]

$("#i1")[0]
<input id=​"i1" type=​"button" value=​"开关">​

// 获取id属性值
$("#i1").attr("id")
"i1"

$("#i1").attr("type")
"button"

// 设置 name 属性 值为 baolin
$("#i1").attr("name","baolin")
[input#i1]

$("#i1")[0]
<input id=​"i1" type=​"button" value=​"开关" name=​"baolin">​

// 修改当前属性值
$("#i1").attr("value","offon")
[input#i1]

// 删除当前属性值
$("#i1").removeAttr("value")
[input#i1]

// prop 用于chekbox,radio 的选择和取消操作 值为 true 和 false
$("#ii1")[0]
<input type=​"checkbox" id=​"ii1" checked=​"checked">​

$("#ii1").prop("checked",true)
[input#ii1]
$("#ii1").prop("checked",false)
[input#ii1]

jQuery的绑定事件

点击事件click

1.选中某个标签,点击事件

$("#i1").click(function() {
    // this 代指当前标签
    this.
    })

委托事件delegate

delegate() 方法为指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。使用 delegate() 方法的事件处理程序适用于当前或未来的元素(比如由脚本创建的新元素)

对新添加的内容,添加事件1

<body>
    <input id="t1" type="text">
    <input id="a1" type="button" value="添加">
    <ul id="u1">
        <li>1</li>
        <li>2</li>
    </ul>
    <script src="jquery-3.2.1.js"></script>
    <script>
        $("#a1").click(function () {
            var v = $("#t1").val();
            var temp = "<li>" + v + "</li>";
            $("#u1").append(temp);
        });
    
        $("ul").delegate("li","click",function () {
            var v = $(this).text()
            alert(v);
        })
    </script>
</body>

对新添加的内容,添加事件2

<body>
    <div style="background-color:yellow">
        <p>这是一个段落。</p>
        <p>请点击任意一个 p 元素,它会消失。包括本段落。</p>
        <button>在本按钮后面插入一个新的 p 元素</button>
    </div>
    <p><b>注释:</b>通过使用 delegate() 方法,而不是 live(),只有 div 元素中的 p 元素会受到影响。</p>
    <script src="jquery-3.2.1.js"></script>
    <script>
        $(document).ready(function(){
          $("div").delegate("p","click",function(){
            $(this).slideToggle();
          });
          $("button").click(function(){
            $("<p>这是一个新段落。</p>").insertAfter("button");
          });
        });
    </script>
</body>

默认事件的终止操作

<body>
<a href="http://www.baidu.com" onclick="return ClickOn()">过来啊1</a>
<a id="i1" href="http://www.baidu.com" >过来啊2</a>

<script src="jquery-3.2.1.js"></script>
<script>
    // DOM方式的终止默认 事件,需要在源 onclick 里面加“return” onclick="return ClickOn()"
    function ClickOn() {
        alert(123);
        // 结尾处return false
        return false;
    }
    // jQuery方式终止默认 事件,直接 return false 即可
    $("#i1").click(function () {
        alert(456);
        return false;
    });
</script>
</body>
表单验证

语法:检查表单是否为空,如果为空提示用户输入信息

<body>
    <form action="https://www.sogou.com/web?query" method="post">
        <input type="text">
        <input type="submit" value="提交">
    </form>

<script src="jquery-3.2.1.js"></script>
<script>
    // 获取所有的submit标签,给其绑定一个方法
    $(":submit").click(function () {
        // 获取submit标签的上一个标签里面值
        var v=$(this).prev().val();
        // 判断值是否大于0
        if(v.length>0){
            return true;
        }else {
            // 如果不大于0 给出提示信息,并返回false不允许提交
            alert("请输入内容");
            return false
        }
    })
</script>
</body>

当框架加载完成后自动执行操作

语法:

$(function(){
    // 将代码写在这里,当框架加载完成后自动执行代码内的操作
})

例:将代码包含在一个匿名函数中

$(function(){
    $(":submit").click(function () {
        // 默认 flag 为 true
        var flag = true;
        $(".error").remove();

        $("#f1").find("input[type='text'],input[type='password']").each(function () {
            var v = $(this).val();
            if (v.length<=0){
                // 单表单中值为0 时,将flag 设置为 false
                flag = false;
                // 创建span标签
                var tag = document.createElement("span");
                // 创建一个 class 属性
                tag.className = "error";
                tag.innerHTML="* 必填项";
                // 将创建的 span标签 添加到 input标签后面
                $(this).after(tag);
                // 这里return false;遇到错误时将后方的循环全部终止,退出当前循环
                // return false;
            }
        });
        // return flag 如果 flag 为ture 提交表单,如果为 false 时,终止提交
        return flag
    })
})

jQuery的三元运算

语法:(如果条件为真,真值赋给v;如果条件为假,假值赋给v)

var v = 条件?真值:假值       

判断如果标签为选中时,将选中取消;

<!--HTML-->
<input type="checkbox" value="true">

<!--分割线-->
$(":checkbox").each(function() {
    var v = this.checked?false:true;
    this.checked=v
})

jQuery的循环

each循环

each() 方法规定为每个匹配元素规定运行的函数。
提示:返回 false 可用于及早停止循环。

语法:

$(selector).each(function(index,element))
参数	                          描述
function(index,element)	
                              必需。为每个匹配元素规定运行的函数。
                              index - 选择器的 index 位置
                              element - 当前的元素(也可使用 "this" 选择器)

当标签为选中时,取消;取消时选中

<body>
<input type="checkbox" checked="checked" />

<script>
    $(":checkbox").each(function() {
        // this,代指当前循环的那一个元素
        // this.checked 表示当前标签是否选中(DOM方法)
        if (this.checked) {
            this.checked = false;
        } else {
            this.checked = true;
        }
    })
</script>
</body>
原文地址:https://www.cnblogs.com/baolin2200/p/7745696.html