jQuery 的基础用法

jQuery 是对 JavaScript 的封装,它是免费、开源的 JavaScript 函数库,jQuery 极大地简化了 JavaScript 编程。

jQuery 的引入

在 html 文件 中加入引用,需要下载,也可以在线引用。

<script src="js/jquery-1.12.4.min.js"></script>

jQuery 的入口函数 (页面加载完成获取标签元素,比 window.onload 快,onload 还需要等标签获取完数据才执行)

// 简化写法
  $(function(){
       ...
  });

jQuery 选择器的种类

  1. 标签选择器
  2. 类选择器
  3. id选择器
  4. 层级选择器
  5. 属性选择器

示例代码:

$('#myId') //选择id为myId的标签
$('.myClass') // 选择class为myClass的标签
$('li') //选择所有的li标签
$('#ul1 li span') //选择id为ul1标签下的所有li标签下的span标签
$('input[name=first]') // 选择name属性等于first的input标签

可以使用 length 属性来判断标签是否选择成功, 如果 length 大于 0 表示选择成功,否则选择失败。

$(function(){
    result = $("div").length;
    alert(result);
});

选择集的过滤

has 方法 和 eq 方法

<script>
    $(function(){
        //  has 方法的使用,选择必须有 id 属性为 mytext 的 div 标签。
        var $div = $("div").has("#mytext");
        //  设置样式
        $div.css({"background":"red"});

        //  eq 方法的使用,选择 index 为 1 的 div 标签。
        var $div = $("div").eq(1);
        //  设置样式
        $div.css({"background":"yellow"});
    });
</script>

<div>
    这是第一个div
</div>

<div>
    这是第二个div
</div>

选择集转移操作

元素的各种操作,都要先选定需要的目标标签,所以选择集需要掌握。

  • $(’#box’).prev(); 表示选择 id 是 box 元素的上一个的同级元素
  • $(’#box’).prevAll(); 表示选择 id 是 box 元素的上面所有的同级元素
  • $(’#box’).next(); 表示选择 id 是 box 元素的下一个的同级元素
  • $(’#box’).nextAll(); 表示选择 id 是 box 元素的下面所有的同级元素
  • $(’#box’).parent(); 表示选择 id 是 box 元素的父元素
  • $(’#box’).children(); 表示选择 id 是 box 元素的所有子元素
  • $(’#box’).siblings(); 表示选择 id 是 box 元素的其它同级元素
  • $(’#box’).find(’.myClass’); 表示选择 id 是 box 元素的class等于 myClass 的元素
<script>
    $(function(){
        var $div = $('#div01');
		
		// 设置样式
        $div.prev().css({'color':'red'});
        $div.prevAll().css({'text-indent':50});
        $div.next().css({'color':'blue'});
        $div.nextAll().css({'text-indent':80});
        $div.siblings().css({'text-decoration':'underline'})
        $div.parent().css({'background':'gray'});
        $div.children().css({'color':'red'});
        $div.find('.sp02').css({'font-size':30});
    });  
</script>

<div>
    <h2>这是第一个h2标签</h2>
    <p>这是第一个段落</p>
    <div id="div01">这是一个<span>div</span><span class="sp02">第二个span</span></div>
    <h2>这是第二个h2标签</h2>
    <p>这是第二个段落</p>
</div>

获取和设置元素内容

html 方法

<script>
    $(function(){
        var $div = $("#div1");
        //  获取标签的html内容
        var result = $div.html();
        alert(result);
        //  设置标签的html内容,之前的内容会清除
        $div.html("<span style='color:red'>你好</span>");
        //  追加html内容
        $div.append("<span style='color:red'>你好</span>");
    });
</script>

<div id="div1">
    <p>hello</p>
</div>

prop 方法的使用

<style>
    .a01{
        color:red;
    }
</style>

<script>
    $(function(){
        var $a = $("#link01");
        var $input = $('#input01')

        // 获取元素属性
        var sId = $a.prop("id");
        alert(sId);

        // 设置元素属性
        $a.prop({"href":"http://www.baidu.com","title":'这是去到百度的链接',"class":"a01"});

        //  获取value属性
        // var sValue = $input.prop("value");
        // alert(sValue);

        // 获取value属性使用val()方法的简写方式
        var sValue = $input.val();
        alert(sValue);
        // 设置value值
        $input.val("222222");
    })
</script>

<a id="link01">这是一个链接</a>
<input type="text" id="input01" value="111111">

jQuery 的常用事件

<script>
    $(function(){
        var $li = $('.list li');
        var $button = $('#button1')
        var $text = $("#text1");
        var $div = $("#div1")

        //  鼠标点击
        $li.click(function(){             
            // this指的是当前发生事件的对象,但是它是一个原生js对象
            // this.style.background = 'red';

            // $(this) 指的是当前发生事件的jquery对象
            $(this).css({'background':'gold'});
            // 获取jquery对象的索引值,通过index() 方法
            alert($(this).index());
        });

        //  一般和按钮配合使用
        $button.click(function(){
            alert($text.val());
        });

        //  获取焦点
        $text.focus(function(){
            $(this).css({'background':'red'});

        });

        //  失去焦点
        $text.blur(function(){
            $(this).css({'background':'white'});

        });

        //  鼠标进入
        $div.mouseover(function(){
            $(this).css({'background':'gold'});

        });

        //  鼠标离开
        $div.mouseout(function() {
            $(this).css({'background':'white'});
        });
    });
</script>

<div id="div1">
    <ul class="list">
        <li>列表文字</li>
        <li>列表文字</li>
        <li>列表文字</li>
    </ul>

    <input type="text" id="text1">
    <input type="button" id="button1" value="点击">
</div>

事件代理

事件代理就是利用事件冒泡的原理(事件冒泡就是同名事件会向它的父级一级一级传递),把同名事件加到父级上,通过判断事件来源,执行相应的子元素的操作,事件代理首先可以极大减少事件绑定次数,提高性能;其次可以让新加入的子元素也可以拥有相同的操作。

$(function(){
    $list = $('#list');
    // 父元素ul 来代理 子元素li的点击事件
    $list.delegate('li', 'click', function() {
        // $(this)表示当前点击的子元素对象
        $(this).css({background:'red'});
    });
})

<ul id="list">
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
</ul>

delegate方法参数说明:

delegate(childSelector, event, function)

childSelector: 子元素的选择器
event: 同名事件名称,比如: ‘click’
function: 当事件触发执行的函数

JavaScript 对象

JavaScript 中的所有事物都是对象。

创建 JavaScript 对象

  • 通过顶级Object类型来实例化一个对象
  • 通过对象字面量创建一个对象

Object类创建对象的示例代码:

<script>
    var person = new Object();

    // 添加属性:
    person.name = 'tom';
    person.age = '25';

    // 添加方法:
    person.sayName = function(){
        alert(this.name);
    }

    // 调用属性和方法:
    alert(person.age);
    person.sayName();
</script>

对象字面量创建对象的示例代码:

<script>
    var person2 = {
        name:'Rose',
        age: 18,
        sayName:function(){
            alert('My name is' + this.name);
        }
    }

    // 调用属性和方法:
    alert(person2.age);
    person2.sayName();
</script>

json 的介绍

JavaScript Object Notation : javascript对象表示法
类似于 javascript 对象的字符串,它同时是一种数据格式。

json的格式

对象格式的json数据:(只能用 双引号

{
    "name":"tom",
    "age":18
}

数组格式的json数据

["tom",18,"programmer"]

实际使用的 json 格式会比较复杂

{
    "name":"jack",
    "age":29,
    "hobby":["reading","travel","photography"]
    "school":{
        "name":"Merrimack College",
        "location":"North Andover, MA"
    }
}

json数据转换成JavaScript对象

var sJson = '{"name":"tom","age":18}';
var oPerson = JSON.parse(sJson);

// 操作属性
alert(oPerson.name);
alert(oPerson.age);

ajax 写法示例

<script src="js/jquery-1.12.4.min.js"></script>
    <script>
    
        $(function(){
            //  发送ajax请求,给div绑定后台提供的数据
            // $.get("http://127.0.0.1:8000/data.json", {"request": 2}, function(data){
            //     alert(data);
            //     //  成功时回调的函数, 此时data就是后台给提供的数据
            //     $("div").html(data.username + data.passwd);

            // }).error(function(){
            //     //  失败时回调的函数
            //     alert("请求异常");
            // });
            //  请求的后台数据和网页在同一个服务器主机上面,可以省略ip地址和端口号
            // $.get("data.json", {"request": 2}, function(data){
            //     alert(data);
            //     //  成功时回调的函数, 此时data就是后台给提供的数据
            //     $("div").html(data.username + data.passwd);

            // }).error(function(){
            //     //  失败时回调的函数
            //     alert("请求异常");
            // });

            
            // 发送post方式的ajax请求
            $.post("data.json", {"request": 2}, function(data){
                alert(data);
                //  成功时回调的函数, 此时data就是后台给提供的数据
                $("div").html(data.username + data.passwd);

            }, "json").error(function(){
                //  失败时回调的函数
                alert("请求异常");
            });
        })
    </script>



<div>
        静态数据
</div>

出现这个错误的原因是在导入seaborn包时,无法从typing模块中导入名为'Protocol'的对象。 解决这个问题的方法有以下几种: 1. 检查你的Python版本是否符合seaborn包的要求,如果不符合,尝试更新Python版本。 2. 检查你的环境中是否安装了typing_extensions包,如果没有安装,可以使用以下命令安装:pip install typing_extensions。 3. 如果你使用的是Python 3.8版本以下的版本,你可以尝试使用typing_extensions包来代替typing模块来解决该问题。 4. 检查你的代码是否正确导入了seaborn包,并且没有其他导入错误。 5. 如果以上方法都无法解决问题,可以尝试在你的代码中使用其他的可替代包或者更新seaborn包的版本来解决该问题。 总结: 出现ImportError: cannot import name 'Protocol' from 'typing'错误的原因可能是由于Python版本不兼容、缺少typing_extensions包或者导入错误等原因造成的。可以根据具体情况尝试上述方法来解决该问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [ImportError: cannot import name ‘Literal‘ from ‘typing‘ (D:\Anaconda\envs\tensorflow\lib\typing....](https://blog.youkuaiyun.com/yuhaix/article/details/124528628)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值