第二课

节点的选择

first()

获取当前结果集中的第一个对象 相当于eq(0)

last()

获取当前结果集的最后一个对象

slice()

children()

获得匹配元素集合中每个元素的子元素

$('ul.level-2').children()
$('ul.level-2').children('.selected');//可以进行筛选

find()

查找符合选择器的后代元素

$('ul').find('li.current');
$('ul li.current');
$('ul').find('li.current');//尽量用这种方式,性能会更高一些

上面两种方式选择的元素是一样的, 我们应该尽量使用find

节点的选择(父节点)

parent()

获得匹配元素集合中每个元素的父元素

$('li.item-a').parent()

closest()

从元素本身开始,在DOM 树上逐级向上级元素匹配,并返回最先匹配的祖先元素。
必须要接收一个参数

<div class="box">
    <div class="box">cccc
        <div>bbbb
            <div id="div1">aaaa</div> 
        </div>
    </div>   
</div>
<script>
$('#div1').closest('div').css('background', 'red');//从元素本身开始
$('#div1').closest('.box').css('background', 'red');//返回最先匹配的祖先元素
</script>

例子 : 点击查找指定节点

点击span让相应的li背景变红

<ul>
    <li>
        <div><span>001</span></div>
    </li>
    <li>
        <div><span>002</span></div>
    </li>
    <li>
        <div><span>003</span></div>
    </li>
    <li>
        <div><span>004</span></div>
    </li>
    <li>
        <div><span>005</span></div>
    </li>
</ul>
<script>
$('span').click(function(){
    $(this).closest('li').css('background','red');
})
</script>

节点的操作

创建节点

//原生的方式
var oDiv = document.createElement('div');

//jq的方式
var $div = $('<div>')

注意: 要加<``>,不然就变成选择

比原生JS更强大的创建方式

//原生的方式
var oDiv = document.createElement('div');
oDiv.innerHTML = 'hello';
oDiv.id = 'div1';

//jq的方式
var $div = $('<div id="div1">hello</div>')

插入子节点

append()

在每个匹配元素里面的末尾处插入参数内容。

它的参数可以是DOM 元素,DOM元素数组,HTML字符串,或者jQuery对象,用来插在每个匹配元素里面的末尾。

<h2>Greetings</h2>
<div class="container">
  <div class="inner">Hello</div>
  <div class="inner">Goodbye</div>
</div>

<div class="box">box</div>
<script>
var oH2 = document.getElementsByTagName('h2')[0];
$('.inner').append(oH2);//DOM元素


$('.inner').append('<p>Test</p>');//HTML字符串


$('.inner').append($('.box'));//jquery对象
</script>

prepend()

将参数内容插入到每个匹配元素的前面(元素内部)。

参数DOM元素,元素数组,HTML字符串,或者jQuery对象,将被插入到匹配元素前的内容。

插入兄弟节点

before()

after()

  • 例子 : 节点上移下移

节点的操作

  • remove() 删除节点
  • clone() 克隆节点
    • 默认不克隆事件
    • 如何克隆事件 clone(true)

JQ中的索引

index()

第一种用法,兄弟中的排行

<body>
    <div>001</div>
    <div id="div1">002</div>
    <div>003</div>
</body>
<script>
    
alert( $('#div1').index() ) ;//1
</script>

第二种用法,筛选后的排行

<div><span>001</span></div>
<div><span id="span1">002</span></div>
<div><span>003</span></div>

<script>
//错误写法
$('#span1').index();//0

//#span1在span集合中的索引
$('#span1').index('span');//1
</script>
  • 例子 : 选项卡
<div id="div1">
    <input class="active" type="button" value="1">
    <input type="button" value="2">
    <input type="button" value="3">
    <div style="display:block">111</div>
    <div>222</div>
    <div>333</div>
</div>
<script>
$('#div1').find('div').eq( $(this).index('input')  ).css('display','block').siblings('div').css('display','none');
</script>

JQ中的遍历

遍历就是循环

我们知道在JQ中有很多的省略循环的方法比如说css click ...

但有时候我们也需要自定义循环操作

.each()

回调函数的两个参数

  • 第一个参数代表下标
  • 第二个参数代表每个原生dom对象
$('span').each(funciton(i, elem){
    alert(i);
    elem.style.background = 'red';
})

each中this指向

this === elem

$('span').each(funciton(i, elem){
    $(this).html(i);
})

退出循环

我们知道在for循环中我们是用break来退出整个循环

在.each() 中 我们用return false来退出整个循环

$('span').each(funciton(i, elem){
    $(this).html(i);
    if(i==0){
        return false;
    }
})

JQ转原生JS

  • get()
  • 与eq的区别
  • 为什么要转,比如:
    • 获取内容的高度
    • 元素之间的比较

get()

获取原生都dom对象

$('div').get(0).innerHTML = 'sdfsdf';

与eq的区别

get方法得到的是原生dom对象, eq得到的是jquery对象

$('div').get(0).innerHTML = 'sdfsdf';
$('div').eq(0).html('sdfsdf');

为什么要转

获取内容的高度

想要获取textarea里内容的实际高度

<textarea id="t1" style="height:100px">
as
da
sd
asd
a
sd
asd
a
sd
s
s
s
s
s
s
s
s
</textarea>
<script>
$('textarea').height();//100
//height()是获取元素的高度
// jquery中没有提供获取内容高度的方法

$('textarea').get(0).scrollHeight;//360
</script>

元素之间的比较

var oDiv = document.getElementById('div1');
$('#div1').get(0) === oDiv; //true;

练习

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

推荐阅读更多精彩内容

  • 一、样式篇 第1章 初识jQuery (1)环境搭建 进入官方网站获取最新的版本 http://jquery.co...
    凛0_0阅读 3,342评论 0 44
  • 1:jQuery节点创建与属性的处理 创建元素节点:可以有几种方式,后面会慢慢接触。常见的就是直接把这个节点的结构...
    码农小杨阅读 588评论 0 1
  • 暑假的生活已经过去了一周了,在这一周里,我用了三天的时间把暑假作业完成了一些,语文完成了24页;数学完成了...
    星皓妈妈阅读 288评论 0 3
  • 8月28日 星期一 雨 今天是七月初七,牛郎织女相会的日子,女儿都说今天下雨是牛郎织女流的“眼泪”...
    王心如妈妈阅读 216评论 0 3
  • 今天是离开你的第一天,除了想念,还有想与你走下去的盼愿。 第一次见你,是在学校的礼堂里。作为活动协办方的负责人,按...
    Andyyyyang阅读 280评论 0 0