JQuery

  • 找到HTML元素
  • 改变HTML中的内容
  • 根据用户操作做出反馈,比如按下按钮
  • 动画效果
  • ajax

找到HTML元素

$('h1')
$('h1').text()
$('h1').text('where to')

如果想要加载完页面再加载jquery则可以这样:

$(document).ready(function(){<code>});

用jquery:
1.到jquery.com下载jquery
2.在HTML文件中加载'<script src='jquery.min.js'></script>'

在DOM中定位元素:

利用选择器
<h1>where do you want to go</h1>
<h2>travel</h2>
<p>plan your next adventure</p>
<ul id='destinations'>
  <li>Rome</li>
  <li>paris</li>
  <li class='promo'>rio</li>
</ul>

$('li').text('ro')
$('p')
$('#destinations')
$('.promo')

<ul id='destination'>
  <li>rome</li>
  <li>
    <ul id='frame'>
      <li>paris</li>
    </ul>
  </li>
  <li class='promo'>rio</li>
</ul>

直属子元素:子选择器$('#destination>li')
选择多个元素:$('.promo,#frame')
ul下的第一个:伪选择器:$('#destination li:first')
ul下的最后一个:$('#destination li:last')
ul下的奇数个/偶数个:$('destination li:odd'),$('#destination li:even')

元素遍历

如果找到destination下的所有li则不想用子元素:$('#destinations').find('li')
如果找到ul下的第一个子元素,不用伪元素选择器:$('li').last()
如何找到中间元素$('li').first().next()方法链
往上遍历(从子元素到父元素)$('li').first().parent()
往下遍历(从父元素到子元素)$('destination').children('li')直属子元素,如果是find则是所有li。

改变HTML中的内容(DOM遍历)

创建和添加新节点

<li class='vacation'></li>
<h2></h2>
<button></button>

var price=$('<p>From $399.99</p>')
第一种方法:将新节点添加到DOM中去:
before/after/prepend/append
此处应该用$('vacation').append(price)
第二种方法: 将新节点添加到DOM中去:
.appendTo(<element>)
.prependTo(<element>)
.insertAfter(<element>)
insertBefore(<element>)
此处应该用price.appendTo($('.vacation'))

删除button

$('button').remove()

事件(对用户操作做出反馈)

  • $(this)
$('button').on('click',function(){})

如果有多种度假方案,添加按钮就全部添加,移除就全部移除,这显然不是我们想要的,这时就用到了this。this的使用要用$(this)则$(this).remove()

  • 查找类的父节点
    closest()查找这个类的直接父节点。
    parent()查找这个类的所有父节点。
  • 自定义属性
    data-xxx可以添加到任何节点上。
    .data(<name>)读取属性。
    .data(<name>,<value>)设置属性。
  • 事件委托
<li class='vacation onsale' data-price='399.99'>
  <h3>vacation</h3>
  <button>Get Price</button>
  <ul class='comments'>
    <li>Amazing</li>
    <li>want to go!</li>
  </ul>
</li>

$('.vacation').first().data('price')获得价格
如果点击按钮就会调用函数,则如果页面上其他地方也有button,则就会出错,所以只想让vacation里的button生效。
$('.vacation button').on('click',function(){})
也可以这样:$('.vacation').on('click','button',function(){})让事件在vacation上发生,但是实际起作用的是button。

  • filter和addClass/removeClass
<ul>
  <li class='vacation onsale'>
    <ul class='comments'>
      <li></li>
      <li></li>
    </ul>
  </li>
  <li class='vacation'></li>
  <li class='vacation'></li>
</ul>

filter
$('.vacation onsale')/遍历:$('.vacation').filter('.onsale')
.addClass和.removeClass
$('.vacation').filter('.onsale').addClass('high lighted')

  • toggleClass()
    $(this).toggleClass('high highed')如果有这个类就添加,如果没有就移除
  • .slideDown滑动显示;.slideUp()用来隐藏;.slideToggle()两种状态轮流
  • 键盘事件
    keyperss/keydown/keyup
  • 表单事件
    blur/select/change/focus/submit
  • val
    可以设置input值,也可以直接获取
    .val(<new vlaue>)/.val()
  • 淡入淡出效果
    .fadeIn()/.fadeOut()/.fadeToggle()/
  • 阻止默认行为
    event.preventDefault()
  • 把字符串转换成数字,要在字符串前面用“+”号+(this).val()
  • 改变CSS样式
    设置css
    $(this).css('background-color','1px solid red')
    .css('border-color','1px solid blue')//繁琐
    $(this).css({'background-color':'#23565','border-color':'1px solid red'}) 如果觉这样也是繁琐,可以把样式写在css中,然后添加类(addClass)
    $(this).find('price').css('display','block')可以用$(this).find('price').show()替代,还有$(this).find('price').hide()

动画

$(this).css('top':'-10px')//繁琐
$(this).animate({'top':'-10px'})
hasClass:$(this).hasClass('highlighted')//一般用于if中是否包含highlighted这个类。
$(this).animate({'top':'-10px'},400/'fast'/'low') //动画速度
在js中用了动画样式,如果只在css中用动画样式怎么做?
.vacation{
transition: top 0.2s;
}

JQuery常用方法(函数)

  • .each(function(index,Element))
    html:
<div class='box'>
  <ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
  </ul>
</div>

jquery:

$('.box>ul>li').each(function(index,node){
  var str=$(node).text
  $(node).text(str+str)
})//目的是把1.2.3.4变成11.22.33.44,node是原生js对象,代表元素li。index代表元素li的下标。

使用each时也可以用this,对应原生dom对象,对应node。

$('.box>ul>li').each(function(index,node){
  var str=$(this).text()
  $(this).text(str+str)
})
  • map(function(index,element))
var arr=$('.box>ul>li').map(function(){
  return $(this).text()//this对应原生dom对象
})
console.log(arr)
  • .extend()扩展对象
var obj1={a:1}
var obj2={b:2,d:5}
var obj3={b:3,d:5}

1.$.extend(obj1,obj2)//obj1==={a:1,b:2,c:3}把obj2的扩展到obj1上,obj1有的就覆盖,没有就新增。
2.$.extend(obj1,obj2,obj3)//{a:1,b:3,c:3,d:5}把obj2,obj3扩展到obj1上。
3.如果不想修改obj1则var obj4={}
$.extend(obj4,obj1,obj2,obj3)//{a:1,b:3,c:3,d:5}
也可以var obj5=$.extend({},obj1,obj2,obj3)

  • .clone深复制
    $('.hello').clone()
  • index()获取兄弟元素中的排行
    $('.active').index()
<div class='ct'>
  <div class='c1'>c1</div>
  <div class='c2'>--</div>//想知道--在c2中的排行则`$('.ct').index('.c2')`
</div>
  • .ready
    $(document).ready(function(){})//当dom结构完全加载后再加载
  • .eq()

jquery ajax

$.ajax({
  url:'/hello',
  method:'get',
  dataType:'json',
  data{
    a:1,
    b:2
}
  success:function(ret){
    console.log(ret)
}
  error:function(){}
})//老的写法
$.ajax({
  url:'/hello',
  method:'post',
  dataType:'json',
  data{
    a:1,
    b:2
}
}).done(function(ret){}).error(function(){})//常用的写法
$.get('/hello',{name:'ruoyu',age:28})
  .done(function(ret){
    console.log(ret)
}).fail(function(){
  console.log('error')
})//只是简单的获取数据可以这样写
$.post('/comment',{comment:'饥人谷'})
  .done(function(ret){
    console.log(ret)
})//也是简写

jquery jsonp跨域

$.ajax({
  type:'get',
  url:'/head',
  dataType:'jsonp',
  jsonpCallback:'cb',//设置一个回调函数,名字随便取,和后台的发送的方法一致。
  success:function(){}
})
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • 首先附上jQuery官网 http://jquery.com/ 2.0版本开始放弃了对IE7/8及其之前版本的...
    风之帆阅读 686评论 4 2
  • 题目1: jQuery 中, $(document).ready()是什么意思? $(document).read...
    饥人谷_js_chen阅读 376评论 0 1
  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 1,157评论 0 1
  • “并不是那些记忆 在我心里维系着你 你也并不因一种美好愿望的力量 而属于我” ——里尔克《室内肖像》 日光茂盛时 ...
    水槛阅读 347评论 5 5
  • 前一篇文章讲了起步阶段外语学习者(即:指零基础或认识少量单词,听、说、读、写基本不会的学习者)如何学对发音。本文开...
    0ea92fe5b9fc阅读 814评论 0 4