JQuery使用及基础原理解析相关笔记(一)

1.jquery

◆很强大,但是很臃肿,需要自己封装一个jquery,要用到jqery中哪些方法,就把原来jquery中的方法拿出来。

◆jquery有两大特点:链式编程、隐式迭代(遍历)。


2.原生js的入口函数与jquery的入口函数

◆原生js的入口函数:

window.onload = function () {}

是页面文档和页面资源都加载完毕之后开始执行函数里面的代码,

document.onready =function () {}

是页面文档加载完毕之后开始执行函数里面的代码(但是这个原生的js的入口函数是jquery脚本库扩展出来的事件,只有在引入了jquery脚本库的时候才能够使用document.onready,没有引入脚本库的时候document对象是没有这个事件的),document.onready 比 window.onload要快一点,因为图片资源还没有显示,document.onready里的代码就执行了,window.onload是页面所有资源都加载完毕才执行的,window对象没有onready。

◆jquery的入口函数:

$(document).ready(function () {});
$(function () {});
$(window).ready(function () {});
这三种方式都和document.onready一样,都是页面文档加载完毕之后 就进入JQuery的入口函数开始执行函数里面的代码,

$(window).load(function () {});

这种方式和

window.onload=function(){}

一样,都是页面文档和页面资源都加载完毕之后开始执行函数里面的代码。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JQuery的入口函数与原生js的入口函数</title>
    <script src="jquery-1.11.1.js"></script>
</head>
<body>
<script>


    //原生js的入口函数  :页面文档加载完毕之后,
    // 页面需要加载的资源也加载完毕之后,就进入原生js的入口函数
    window.onload = function () {
        alert("原生js的入口函数  window.onload")

    }

    //window对象没有onready事件  只有document对象有   ready要比load快
//    window.onready=function(){
//        alert("原生js的入口函数  window.onready")
//
//    }

    //原生js的入口函数  :页面文档加载完毕之后,就进入原生js的入口函数
    //效果与下面的$(document).ready(function(){});差不多   //但是这个document对象的事件是jquery脚本库扩展出来的,
	 //所以在没有引入jquery脚本库时,
	 //document对象没有这个事件
    document.onready = function () {
        alert("原生js的入口函数  document.onready")

    }

    //JQuery的入口函数 第一种方式 :页面文档加载完毕之后 就进入JQuery的入口函数
    $(document).ready(function () {
        alert("JQuery的入口函数 第一种方式 $(document).ready")
    });

    //JQuery的入口函数 第二种方式:页面文档加载完毕之后 就进入JQuery的入口函数
    $(function () {
        alert("JQuery的入口函数 第二种方式 $(function () ")
    });

    //JQuery的入口函数 第三种方式:页面文档加载完毕之后 就进入JQuery的入口函数
    $(window).ready(function () {
        alert("JQuery的入口函数 第三种方式 $(window).ready")

    })

    //这种jquery的入口函数 效果与window.onload差不多
    $(window).load(function () {
        alert("JQuery的入口函数 第四种方式 $(window).load")

    });

</script>
<img src="https://img-blog.csdnimg.cn/2022010613531420258.png" alt="">
</body>
</html>


3.Query与$的区别:其实它们是一样的,都是一个函数名,并且它们完全相等,jQuery===$。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JQuery与$的区别(其实他们是一样的)</title>
    <script src="jquery-1.11.1.js"></script>
    <script>


        console.log(console);
        console.log($);//$其实是一个函数名
        console.log(jQuery);//jQuery其实是一个函数名
        console.log($===jQuery);//他们是用一个函数
    </script>
</head>
<body>
</body>
</html>


4.jQuery中的dom对象与原生js中的dom对象的区别

◆jQuery的dom对象是对js的dom对象的封装
◆jQuery无论是通过什么方式获取的dom对象都是伪数组,伪数组中装的成员就是原生js的dom对象。
◆不光是将原生js的dom对象封装到数组中,并且还给这个数组增加了很多功能方法,也就是给原来的js的dom对象穿上了一层带有功能的皮肤,虽然原生的js的dom对象也可以自己封装这些功能方法,但是兼容性没有jQuery的那么好。
★模拟jQuery对象操作css样式的功能方法

 Object.prototype.css = function (json) {
        var cssArr = [];
        for (var key in json) {
            cssArr.push(key + ":" + json[key]);
        }
        this.style.cssText = cssArr.join(";");
    }
    box.css({width: "200px", height: "200px", "background-color": "#f00"});

★jquery与js操作样式的方式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jquery与js操作样式的方式</title>
    <script src="jquery-1.11.1.js"></script>
</head>
<body>
<div id="box1"></div>
<div id="box2"></div>


<script>
    var box1 = document.getElementById("box1");
    var box2 = $("#box2");
    //原生js一次性设置所有的样式 可以使用 cssText属性
    box1.style.cssText = "width:200px;height:200px;background-color:#0f0";
    //jquery一次性设置所有的样式 可以使用css();
    box2.css({width: "200px", height: "200px", "background-color": "#f00"});

    //jquery获取的dom对象是对js获取的dom对象进行了封装,
    // 给js的dom对象穿上了一层带有功能的皮肤

    //    //自己给原生js封装一下并且也穿上一层功能皮肤
    Object.prototype.css = function (json) {
        var cssArr = [];
        for (var key in json) {
            cssArr.push(key + ":" + json[key]);
        }
        this.style.cssText = cssArr.join(";");
    }
    box1.css({width: "200px", height: "200px", "background-color": "#f00"});

</script>
</body>
</html>

◆jQuery中的Dom对象与js中的Dom对象的区别和联系

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jQuery中的Dom对象与js中的Dom对象的区别和联系</title>
    <script src="jquery-1.11.1.js"></script>
</head>
<body>
<div id="box" class="cbox"></div>
<script>
    // js和jquery通过id获取dom对象\\

    var box = document.getElementById("box");
    var jbox = $("#box");
    //<div id="box" class="cbox"></div>
    console.log(box);
    //jQuery.fn.init [div#box.cbox, context: document, selector: "#box"]
    console.log(jbox);


    console.log("-----------------------------------");

    // js和jquery通过class获取dom对象\\
    var cbox = document.getElementsByClassName('cbox');
    var jcbox = $(".cbox");
    //HTMLCollection [div#box.cbox, box: div#box.cbox]
    console.log(cbox);
    //jQuery.fn.init [div#box.cbox, prevObject: jQuery.fn.init(1), context: document, selector: ".cbox"]
    console.log(jcbox);


    console.log("-----------------------------------");

    // js和jquery通过tagName获取dom对象\\
    var div = document.getElementsByTagName("div");
    var jdiv = $('div');
    //HTMLCollection [div#box.cbox, box: div#box.cbox]
    console.log(div);
    //jQuery.fn.init [div#box.cbox, prevObject: jQuery.fn.init(1), context: document, selector: "div"]
    console.log(jdiv);




    console.log("-----------------------------------");

    //js通过id获取的是一个dom对象  而jquery通过id获取的是个数组,
    //js通过tagName与class获取的是一个数组  jquery通过tagName与class获取的也是一个数组
    //通过结构可以看出,jquery获取的dom对象是对js获取的dom对象进行了封装。

</script>
</body>
</html>


5.原生的js的dom对象可以和jQuery的dom对象相互转换

◆js的dom对象转换为jQuery的dom对象:$(js的dom对象)或jQuery(js的dom对象)。

◆jQuery的dom对象转换为js的dom对象:jQuery的dom对象[index]或jQuery的dom对象.get(index),就可以获取jQuery的dom对象的伪数组中的一个dom对象,但是如果get方法中不写索引就可以获取jQuery的dom对象的伪数组中的所有的dom对象,jQuery的dom对象.get()获取一个正常的原生js的dom对象的数组,不再是伪装数组。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jQuery的dom对象与js的dom对象之间相互转换</title>
    <script src="jquery-1.11.1.js"></script>
</head>
<body>
<div></div>
<div class="boxc"></div>
<div id="boxi"></div>
<div></div>
<div></div>
<script>

    //js的dom对象
    var boxtag = document.getElementsByTagName("div");
    var boxc = document.getElementsByClassName("boxc");
    var boxi = document.getElementById("boxi");

    //jquery的dom对象
    var jqboxtag = $("div");
    var jqboxc = $(".boxc");
    var jqboxi = $("#boxi");

    //使用jquery的dom对象 改变css样式
    jqboxtag.css({width: 100, height: 100, border: "1px solid #0f0"});

    //将js 的dom对象 转换为jquery的dom对象
    boxi = $(boxi);
    //使用转换为jquery的dom对象 改变css样式
//    boxi.css({"background-color": "#f00"});//可以传json 设置多个属性
    boxi.css("background-color", "#f00");//可以传字符串 设置一个属性

    //将jquery的dom对象 转换为js的dom对象
    jqboxc = jqboxc[0];
    jqboxc.style["background-color"] = "#ff0";

    console.log(jqboxtag);
    console.log(jqboxtag.get());
    //    再将jquery的dom对象 转换为js的dom对象
    jqboxi = jqboxi.get(0);//这个方法如果不传参数 则会返回一个数组
    jqboxi.innerHTML = "将jquery的dom对象 转换为js的dom对象成功";

    //jquery的dom对象都是数组,将原生的js对象封装到了一个数组中,
    // 所以你才能够通过[]来获取原生的js的dom对象,
    // get方法是给这个数组新增的,传递索引时就返回dom对象,
    // 不传索引时就返回装着dom对象的正常数组。

</script>
</body>
</html>


6.jQuery中的伪数组是怎么实现的,清空原本数组中的原型(所有功能方法),添加自己新增的功能方法,添加索引为字符串的成员context

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jQuery对象是这样的伪数组</title>
</head>
<body>
<script>
    //模拟jquery的dom对象的封装 ,jquery的dom对象就是这样的伪数组
    var arr = [];
    arr[0] = 0;
    arr[1] = 1;
    arr[2] = 2;
    arr[3] = 3;
    arr[4] = 4;
    arr["5"] = 5;

    //js的数组[]里面不光是索引 还可以是字符串
    arr["context"] = document;

        //清空数组的原型  没有数组的方法了
        arr["__proto__"] = null;

    console.log(arr);//打印伪数组

    //这样只能遍历索引为数字的   或者索引为字符串的数字的
    for (var i = 0; i < arr.length; i++) {
        console.log(i + "   " + arr[i]);
    }

    //这样既可以遍历索引为数字的也可以遍历索引为字符串的
    for (var key in arr) {
        console.log(key + "  " + arr[key]);
    }

</script>
</body>
</html>


7.简单使用jQuery:隔行变色、页面开关灯

◆隔行变色

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>使用jQuery进行隔行变色</title>
    <script src="jquery-1.11.1.js"></script>

    <script>
        $(document).ready(function () {
            var liArr = $("li");
            //因为jquery的dom对象是伪数组 所以可以直接使用for循环
            for (var i = 0; i < liArr.length; i++) {
                if (i % 2 == 0) {
                    liArr.get(i).style.backgroundColor = "#f00";
                } else {
                    liArr[i].style.backgroundColor = "#0f0";
                }
            }
        });
    </script>
</head>
<body>
<ul>
    <li>使用jQuery进行隔行变色</li>
    <li>使用jQuery进行隔行变色</li>
    <li>使用jQuery进行隔行变色</li>
    <li>使用jQuery进行隔行变色</li>
    <li>使用jQuery进行隔行变色</li>
    <li>使用jQuery进行隔行变色</li>
    <li>使用jQuery进行隔行变色</li>
    <li>使用jQuery进行隔行变色</li>
    <li>使用jQuery进行隔行变色</li>
    <li>使用jQuery进行隔行变色</li>
</ul>
</body>
</html>

◆页面开关灯

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>使用jQuery进行页面开关灯</title>
    <style type="text/css">
        img {
            display: block;
            margin: 100px auto;
        }
    </style>
    <script src="jquery-1.11.1.js"></script>
    <script>

        $(document).ready(function () {
            var btns = document.getElementsByTagName("button");
            var body = $("body");

            $(btns[0]).click(function () {//开灯
                body[0].style.backgroundColor = "white";
            })
            $(btns[1]).click(function () {//关灯
                body.get(0).style.backgroundColor = "black";
            })
        });

    </script>
</head>
<body>
<button>开灯</button>
<button>关灯</button>
<img src="images/jQuery对象和DOM对象.png" width="500" alt="">
</body>
</html>

8.jQuery的基本选择器:

◆无论什么选择器,返回的都是封装着原生的dom对象的伪数组。

◆$(id选择器),$(element选择器),$(class选择器),$(*通配符选择器),$(选择器1,选择器2,选择器3,选择器4)....$(css选择器),其实在css中使用的选择器,都可以放到$()中作为选择器

$("li")
$(".li")
$("*")
$("li,.li,#li,*")
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>基本选择器</title>
    <script src="jquery-1.11.1.js"></script>
</head>
<body>
<ul>
    <li></li>
    <li class="li"></li>
    <li id="li"></li>
    <li class="li"></li>
    <li></li>
</ul>
<script>
    //元素选择器
    var element=$("li");
    element.css({width:"100px",height:"100px","margin-top":"5px","background-color":"#501"});

    //类选择器
    var class1=$(".li");
    class1.css("background-color","#091");

    //id选择器
    var id1=$("#li");
    id1.css({"border":"1px solid #009","background-color":"#ff0"});

    //*通配符选择器
    var all0=$("*");

    //并集选择器
    var bj=$("li,.li,#li,*");

</script>
</body>
</html>


9.jQuery的层级选择器:

◆$(祖 子)后代选择器,$(父>子)子代选择器,$(前+紧接着的后)后兄弟选择器,$(前~所有的后)后同辈选择器,其实在css中使用的选择器,都可以放到$()中作为选择器

$("ul li")
$("ul>li")
$("#prv+ol")
$("#prv~li")
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>层级选择器</title>
    <script src="jquery-1.11.1.js"></script>
    <script>
        $(function () {
            //后代选择器
            var li1 = $("ul li");
            li1.css({"background-color":"#0f0","margin":"5px"});

            //子代选择器
            var li2 = $("ul>li");
            li2.css({"border":"1px solid #f00"});

            //后兄弟选择器
            var next = $("#prv+ol");
            next.css("border","2px solid #00f");

            //后同辈选择器
            var nextall = $("#prv~li");
            nextall.css("border","5px solid #000");
        });
    </script>
</head>
<body>
<ul>
    <li></li>
    <li></li>
    <li id="prv"></li>
    <ol>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
    </ol>
    <li></li>
    <li></li>
</ul>
</body>
</html>


10.jQuery的基本过滤选择器

◆在基本选择器的基础上进行过滤操作:如$("li:first");,找到所有li后直接找到第一个li。

:first过滤第一个、

:not(selector)过滤不包含selector的、

:even过滤索引为偶数的、

:odd过滤索引为奇数的、

:eq(index)过滤索引等于index的、

:gt(index)过滤索引大于index的、

:last过滤最后一个、

:lt(index)过滤索引小于index的、

:header过滤h1-h6、

:animated过滤正在执行动画的、

:focus过滤已经获取焦点。


11.jQuery的筛选选择器

 ◆ 筛选过滤选择器操作:如$("li").eq(0);和$("li:even").eq(0);,前者表示找到所有li后过滤第一个li,后者表示找到所有索引为偶数的li后过滤第一个。

//    eq(index | -index) //等于索引的元素
//    first() //第一个元素
//    last() //最后一个元素
//    hasClass(class) //是否包含类
//    filter(expr | obj | ele | fn)
//    is(expr | obj | ele | fn)
//    map(callback)
//    has(expr | ele)
//    not(expr | ele | fn) 是否不包含
//    slice(start, [end])

    ◆筛选查找选择器操作:如$("li").eq(0).next();或者$("li:first").next();,都是找到第一个li然后在此基础上查找下一个。

//    children([expr]) //找子代
//    closest(e | o | e)1.7 *
//    find(e | o | e)//从jquery对象的后代中查找必须制定参数,如果不指定获取不到元素
//    next([expr])//下一个
//    nextall([expr])//下面的全部
//    nextUntil([e | e][, f])
//    offsetParent() //带有定位的父节点
//    parent([expr]) //父节点
//    parents([expr])
//    parentsUntil([e | e][, f])
//    prev([expr]) //上一个
//    prevall([expr]) //上面的全部
//    prevUntil([e | e][, f])
//    siblings([expr]) //所有兄弟 除了自己

 

12.使用JQuery的选择器来DIY动画效果:下拉菜单、隔行变色、高亮显示戏曲牌、手风琴折叠面板、服饰广告

◆下拉菜单

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>使用jQuery的选择器制作下拉菜单</title>
    <style type="text/css">

        * {
            margin: 0;
            padding: 0;
        }

        ul {
            list-style: none;
        }

        .wrap {
            width: 330px;
            height: 30px;
            margin: 100px auto 0;
            padding-left: 10px;
            background-image: url(images/bg.jpg);
        }

        .wrap li {
            background-image: url(images/libg.jpg);
        }

        .wrap > ul > li {
            float: left;
            margin-right: 10px;
            position: relative;
        }

        .wrap a {
            display: block;
            height: 30px;
            width: 100px;
            text-decoration: none;
            color: #000;
            line-height: 30px;
            text-align: center;
        }

        .wrap li ul {
            position: absolute;
            top: 30px;
            display: none;
        }

    </style>
    <script type="text/javascript" src="jquery-1.11.1.js"></script>
    <script>

        //需求:当移入到一级菜单时,显示对应的二级菜单,移出时隐藏对应的二级菜单
        //思路:所有一级菜单的鼠标移入事件,
        // 然后show当前一级菜单下的ul,
        // 移出时hide当前一级菜单下的ul
        //步骤:
        //1.获取事件源及相关元素对象
        //2.绑定事件
        //3.书写事件驱动程序

        $(document).ready(function () {

            //1.获取事件源及相关元素对象
            var wrap = $(".wrap");
            var liArr = wrap.children("ul").children("li");
//            console.log(wrap)
//            console.log(liArr)

            //2.绑定事件
            liArr.mouseenter(function () {
                $(this).children("ul").show();
            });
            liArr.mouseleave(function () {
                $(this).children("ul").hide();
            });


            //3.书写事件驱动程序

        });


    </script>

</head>
<body>
<div class="wrap">
    <ul>
        <li>
            <a href="javascript:void(0);">一级菜单1</a>
            <ul>
                <li><a href="javascript:void(0);">二级菜单1</a></li>
                <li><a href="javascript:void(0);">二级菜单2</a></li>
                <li><a href="javascript:void(0);">二级菜单3</a></li>
            </ul>
        </li>
        <li>
            <a href="javascript:void(0);">一级菜单2</a>
            <ul>
                <li><a href="javascript:void(0);">二级菜单1</a></li>
                <li><a href="javascript:void(0);">二级菜单2</a></li>
                <li><a href="javascript:void(0);">二级菜单3</a></li>
            </ul>
        </li>
        <li>
            <a href="javascript:void(0);">一级菜单3</a>
            <ul>
                <li><a href="javascript:void(0);">二级菜单1</a></li>
                <li><a href="javascript:void(0);">二级菜单2</a></li>
                <li><a href="javascript:void(0);">二级菜单3</a></li>
            </ul>
        </li>
    </ul>
</div>
</body>
</html>

◆隔行变色

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>使用jQuery的选择器制作-隔行变色</title>
</head>
<body>
<ul>
    <li>使用jQuery的选择器制作-隔行变色</li>
    <li>使用jQuery的选择器制作-隔行变色</li>
    <li>使用jQuery的选择器制作-隔行变色</li>
    <li>使用jQuery的选择器制作-隔行变色</li>
    <li>使用jQuery的选择器制作-隔行变色</li>
</ul>
<script src="jquery-1.11.1.js"></script>
<script>

    //需求:
    // 首先 让ul中的li 索引为偶数就变绿,索引为奇数就变红,
    // 然后让鼠标移入时颜色变蓝,移除就恢复原样
    //思路:
    //使用:even和:odd基本过滤器来找到对应的li改变其颜色
    //设置li的鼠标移入事件和移出事件,并且设置一个计数器
    //鼠标移入时记录颜色,鼠标移出时把记录的颜色赋值回去
    //步骤:
    //获取事件源及相关元素对象
    //绑定事件
    //书写事件驱动程序

    //获取事件源及相关元素对象
    var evenLi = $("li:even");//偶数索引的li
    var oddLi = $("li:odd");//奇数索引的li
    var allLi = $("li");//全部li

    //设置隔行变色
    evenLi.css("background", "#0f0");
    oddLi.css("background", "#f00");

    //绑定事件
    var color = "";
    allLi.mouseenter(function () {
        color = $(this).css("background");
        $(this).css("background", "#00f");
    });
    allLi.mouseleave(function () {
        $(this).css("background", color);
    });


    //书写事件驱动程序


</script>
</body>
</html>

◆高亮显示戏曲牌

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>使用jQuery的选择器制作-高亮显示戏曲牌</title>
    <style type="text/css">
        * {
            margin: 0;
            padding: 0;
        }

        ul {
            list-style: none;
        }

        body {
            background: #000;
        }

        .wrap {
            margin: 100px auto 0;
            width: 630px;
            height: 394px;
            padding: 10px 0 0 10px;
            background: #000;
            overflow: hidden;
            border: 1px solid #fff;
        }

        .wrap li {
            float: left;
            margin: 0 10px 10px 0;

        }

        .wrap img {
            display: block;
            border: 0;
        }
    </style>
    <script src="jquery-1.11.1.js"></script>
    <script>

        //防止图片加载不出来
        $(window).load(function () {
            //需求:首先让所有图片透明度变为0.4,当鼠标移入到某一张图片上时透明度变为1.0
            //思路:改变透明度而已,设置opacity属性即可
            //步骤:
            //1.获取事件源及相关元素对象
            //2.绑定事件
            //3.书写事件驱动程序

            //1.获取事件源及相关元素对象
            var liArr = $(".wrap>ul>li");
            liArr.css("opacity", "0.4");
            //2.绑定事件
            liArr.mouseenter(function () {
                $(this).css("opacity", "1.0");

            });
            liArr.mouseleave(function () {
                $(this).css("opacity", "0.4");

            });

            //3.书写事件驱动程序


        });

    </script>
</head>
<body>
<div class="wrap">
    <ul>
        <li><a href="#"><img src="images/01.jpg" alt=""/></a></li>
        <li><a href="#"><img src="images/02.jpg" alt=""/></a></li>
        <li><a href="#"><img src="images/03.jpg" alt=""/></a></li>
        <li><a href="#"><img src="images/04.jpg" alt=""/></a></li>
        <li><a href="#"><img src="images/05.jpg" alt=""/></a></li>
        <li><a href="#"><img src="images/06.jpg" alt=""/></a></li>
    </ul>
</div>
</body>
</html>

◆手风琴折叠面板

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>使用jQuery的选择器制作-手风琴折叠面板</title>
    <style type="text/css">
        * {
            padding: 0;
            margin: 0;
        }

        ul {
            list-style-type: none;
        }

        .parentWrap {
            width: 200px;
            text-align: center;

        }

        .menuGroup {
            border: 1px solid #999;
            background-color: #e0ecff;
        }

        .groupTitle {
            display: block;
            height: 20px;
            line-height: 20px;
            font-size: 16px;
            border-bottom: 1px solid #ccc;
            cursor: pointer;
        }

        .menuGroup > div {
            height: 200px;
            background-color: #fff;
            display: none;
        }

    </style>
    <script src="jquery-1.11.1.js"></script>
    <script>

        $(function () {

            //需求:当点击手风琴的某个面板的标题时,
            // 展开当前面板中的内容
            // 隐藏其它面板中的内容
            //思路:设置每一个标题的单击事件
            //      当点击时让内容的显示
            //      让其它面板的内容隐藏
            //步骤:
            //1.获取事件源及相关元素对象
            //2.绑定事件
            //3.书写事件驱动程序

            //1.获取事件源及相关元素对象
            var span = $(".parentWrap>.menuGroup>.groupTitle");

            //2.绑定事件
            span.click(function () {
                //链式书写,显示自己 隐藏其它
                $(this).next("div").show().parent("li").siblings("li").children("div").hide();
            });

            //3.书写事件驱动程序


        });

    </script>
</head>
<body>
<ul class="parentWrap">
    <li class="menuGroup">
        <span class="groupTitle">标题1</span>
        <div>我是弹出来的div1</div>
    </li>
    <li class="menuGroup">
        <span class="groupTitle">标题2</span>
        <div>我是弹出来的div2</div>
    </li>
    <li class="menuGroup">
        <span class="groupTitle">标题3</span>
        <div>我是弹出来的div3</div>
    </li>
    <li class="menuGroup">
        <span class="groupTitle">标题4</span>
        <div>我是弹出来的div4</div>
    </li>
</ul>
</body>

◆服饰广告

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>使用jQuery的选择器制作-淘宝精品服饰广告</title>
    <style type="text/css">
        * {
            margin: 0;
            padding: 0;
            font-size: 12px;
        }

        ul {
            list-style: none;
        }

        a {
            text-decoration: none;
        }

        .wrapper {
            width: 298px;
            height: 248px;
            margin: 100px auto 0;
            border: 1px solid pink;
            overflow: hidden;
        }

        #left, #center, #right {
            float: left;
        }

        #left li, #right li {
            background: url(images/lili.jpg) repeat-x;
        }

        #left li a, #right li a {
            display: block;
            width: 48px;
            height: 27px;
            border-bottom: 1px solid pink;
            line-height: 27px;
            text-align: center;
            color: black;
        }

        #left li a:hover, #right li a:hover {
            background-image: url(images/abg.gif);
        }

        #center {
            border-left: 1px solid pink;
            border-right: 1px solid pink;
        }
    </style>
    <script src="jquery-1.11.1.js"></script>
    <script>

        $(function () {

            //需求:当鼠标移入到对应的栏目时显示对应的商品
            //思路:先给左边的栏目设置鼠标移入事件  对应的li索引展示对应的商品
            //      再给右边的栏目设置鼠标移入事件  在对应的索引上加9
            //步骤:
            //1.获取事件源及相关元素对象
            //2.绑定事件
            //3.书写事件驱动程序

            //1.获取事件源及相关元素对象
            var liLeft = $("#left>li");
            var liRight = $("#right>li");
            var liCenter = $("#center>li");

            //2.绑定事件
            liLeft.mouseenter(function () {
                liCenter.eq($(this).index()).show().siblings().hide();
            });


            liRight.mouseenter(function () {
                console.log(liCenter.eq($(this).index() + 9));
                liCenter.eq($(this).index() + 9).show().siblings().hide();
            });

            //3.书写事件驱动程序


        })

    </script>
</head>
<body>
<div class="wrapper">

    <ul id="left">
        <li><a href="#">女靴</a></li>
        <li><a href="#">雪地靴</a></li>
        <li><a href="#">冬裙</a></li>
        <li><a href="#">呢大衣</a></li>
        <li><a href="#">毛衣</a></li>
        <li><a href="#">棉服</a></li>
        <li><a href="#">女裤</a></li>
        <li><a href="#">羽绒服</a></li>
        <li><a href="#">牛仔裤</a></li>
    </ul>
    <ul id="center">
        <li><a href="#"><img src="images/女靴.jpg" width="200" height="250"/></a></li>
        <li><a href="#"><img src="images/雪地靴.jpg" width="200" height="250"/></a></li>
        <li><a href="#"><img src="images/冬裙.jpg" width="200" height="250"/></a></li>
        <li><a href="#"><img src="images/呢大衣.jpg" width="200" height="250"/></a></li>
        <li><a href="#"><img src="images/毛衣.jpg" width="200" height="250"/></a></li>
        <li><a href="#"><img src="images/棉服.jpg" width="200" height="250"/></a></li>
        <li><a href="#"><img src="images/女裤.jpg" width="200" height="250"/></a></li>
        <li><a href="#"><img src="images/羽绒服.jpg" width="200" height="250"/></a></li>
        <li><a href="#"><img src="images/牛仔裤.jpg" width="200" height="250"/></a></li>
        <li><a href="#"><img src="images/女包.jpg" width="200" height="250"/></a></li>
        <li><a href="#"><img src="images/男包.jpg" width="200" height="250"/></a></li>
        <li><a href="#"><img src="images/登山鞋.jpg" width="200" height="250"/></a></li>
        <li><a href="#"><img src="images/皮带.jpg" width="200" height="250"/></a></li>
        <li><a href="#"><img src="images/围巾.jpg" width="200" height="250"/></a></li>
        <li><a href="#"><img src="images/皮衣.jpg" width="200" height="250"/></a></li>
        <li><a href="#"><img src="images/男毛衣.jpg" width="200" height="250"/></a></li>
        <li><a href="#"><img src="images/男棉服.jpg" width="200" height="250"/></a></li>
        <li><a href="#"><img src="images/男靴.jpg" width="200" height="250"/></a></li>
    </ul>
    <ul id="right">
        <li><a href="#">女包</a></li>
        <li><a href="#">男包</a></li>
        <li><a href="#">登山鞋</a></li>
        <li><a href="#">皮带</a></li>
        <li><a href="#">围巾</a></li>
        <li><a href="#">皮衣</a></li>
        <li><a href="#">男毛衣</a></li>
        <li><a href="#">男棉服</a></li>
        <li><a href="#">男靴</a></li>
    </ul>

</div>
</body>
</html>


转载于:https://www.cnblogs.com/jwlLWJ2018/p/9247733.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值