jQuery
jquery功能
- HTML元素选取和操作,通过选择器,操作dom树中的各个元素。
- css和各种属性:可以获取或者修改获取到的元素的标签的属性值。
- HTML DOM遍历和修改:
- 事件函数:为标签设置各种事件函数
- 事件对象:当一个事件触发时候,获取一个事件对象,他存在许多的属性值。
- javascript 特效和动画
- 发送Ajax请求:通过调用对应的方法发送ajax请求并处理返回的数据,通过回调函数,改变某些数据或者状态
在html中导入jQuery包
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> # 从官网下载,也可以指定本地导入
flask模板中加载jquery
flask/
app
static/
js/
jquery.min.js
templates
在一个模板中加jquery.min.js文件,可以利用flask中url_for
函数加载静态文件
# 一个html模板中指定该语句 <script src="http://localhost/static/js/jquery.js"></script> # 固定路径,推荐使用url_for <script src={{ url_for(‘static‘, filename="js/jquery.js") }}></script> # url_for加载静态文件,指定目录为static,filename为具体路径
url_for函数的作用是更具视图函数名字返回url,static可以看作flask加载静态文件的一个视图函数。
Django中加载jquery
django专门提供 django.contrib.staticfiles
管理静态文件。
settitngs.py配置参数
STATIC_URL = ‘/static/‘ # url中的path/static/路劲将会映射到下面的文件路径 STATICFILES_DIRS = [ # 可以添加多个静态文件目录,将按照次序查找 BASE_DIR+"/static", ]
目录结构
proj/ proj/ setting.py static/ js/ jquery.min.js manage.py
对应上面的文件目录,模板中加载静态文件的路径为
# <html> <script type="text/javascript" src="{% static ‘js/jquery.min.js‘ %}"></script> </html>
jQuery对象动态操作dom树
使用script标签执行jquery函数可以执行指定的操作,包括修改dom树中的元素,获取各种事件,可以对页面进行局部修改。jquery提供了一个ready函数,这个函数只有在页面元素全部加载完毕才会执行,保证操作执行时不会出现找不到节点的情况。
定义script标签执行jquery函数
<script> $(document).ready( function(){ } ) </script>
document表示页面全局对象,$(document)将全局对象封装为一个jquery对象,从而可以调用jquery的ready方法,当页面加载完毕后将会触发完成事件,执行ready函数中funcion的内容。上面的内容可以简写为
$(
funcion(){}
);
获取标签
选择器http://jquery.cuishifeng.cn/
元素选择器
- 获取标签:$("p") 获取p标签
- 通过class属性选择器: $("p.intro")class属性为intro的p标签
- 通过id选择器:$(p#login) id=login 的p标签
使用$()得到标签都将啊被封装为一个jquery对象,可调用jquery对象的方法,而原始的标签不能直接调用。
属性选择器
类似与xpath的方式去选择标签元素
$("[href]") |
选择带有href属性的元素 |
$("[href]=‘#]‘") |
选择href属性为‘#’的元素 |
$("[href]!=‘#]‘") |
选择href属性不为‘#’的元素 |
$("[href$=‘.jpg‘]") |
href属性值为.jpg结尾的元素 |
示例
$( function(){ var root = $("root"); # 从dom树中获取root标签 var r = $("<root />") # 自定义一个root标签 console.log(root.css("color")) # 读取root元素的color属性 root.css("color", ‘#fff‘) # 更改root的color属性 root.css({"color":"#F00", "backgroud-color":"#f2f2f2"}) # 同时更改多个 # 追加节点 var div = $("<div />") root.append(div) # 增加兄弟节点 root.after(div) # 内部增加 $(‘#root img‘).attr({ # 过去img标签并操作其属性 height:60px, width:120, alt:"图片" }) first_li = $("#root ul li:first") # ul下的第一个li元素, first_li.css("color", "#fff") n_li = $("#root ul li:nth-child(3)") # 第三个li } )
以上只演示了部分方法,jquery提供许多方法对元素节点,属性,文档对象等进行增删改查,可以查看完整api:http://jquery.cuishifeng.cn/
事件函数
我们使用的第一个事件函数就是$(document).ready()函数,当页面完全加载完毕,将会触发这个函数执行。
<div> <button class="testclick">点击</button> </div> <script> $(document).ready( function(){ $(‘button.testclick‘).click( # 获取button.testclick指定的节点,定义一个click事件 function(event){ } # 点击事件回调,并注入event事件对象,有多种多种可用属性 ) } ) </script>
上面的代码通过选择器获取一个元素对象,并对其设置一个click事件调用,常用的还包括change,dbclick事件等。
Ajax请求
只需要调用对应方法即可发送一个ajax异步请求,例如下面的形式
<script> $(function(){ $.ajax({ type: "POST", # 使用的方法 url: "api/user/login/", # 后端api data: "name=John&location=Boston", # 数据 success: function(msg){ # 成功回调 alert( "Data Saved: " + msg ); }, dataType: "json" # 指定数据类型 }); }) </script>
这里只显示了部分参数,除了url是必写的,其他均为可选参数,文档介绍即可http://jquery.cuishifeng.cn/jQuery.Ajax.html
为了简便get和post方法,封装了高层的get和post方法,同时ajax请求通常用于点击按钮提交数据使用,经常为以下的形式。
<script> $("button.submit").click(function(event){ # 点击事件触发时,发送请求,数据一般来源于dom元素中 $.post( "api/users/login/", # url {"name":"tom", "pwd":123}, # data数据 function(msg){} # 成功回调函数, msg为后端返回值 "json" ) }) </script>
post方法和get方法详细的文档地址:http://jquery.cuishifeng.cn/jQuery.post.html