锋利的jQuery第二章

感觉还是看书好一些,jQuery并不难,但是对于一些东西如果你不知道,你就会感觉到很头疼,比如以前看选择器,网上那么多文章,总结的挺好的,但是不能看下去,太多了,对电脑不爽。现在从书上看到这些总结,感觉很清晰,也可以接受。

1,用jQuery判断某个元素是否存在

if($("#tt").length > 0) {  //使用长度判断
}
if( $("#tt")[0] ) {   //转为Dom对象判断
}

2,选择器,根据例子记忆很好理解

(1)基本选择器:id,class,标签

#id      根据特定的id匹配一个元素    $("#test")选择id为test的元素
.class   根据类名匹配元素           $(".test")选择class为test的元素
element  根据元素名匹配             $("p")选择所有的<p>元素
*        匹配所有元素               $("*")选择所有的元素
selector1,selector2 匹配多个匹配器   $("div,span,p.myClass")选择所有的div,span,class为myClass的<p>标签

如果想改变这些获取到的jQuery对象的背景色,只需要在后面加上:
.css("background","#bbffaa");

(2)层次选择器:后代元素,子元素,相邻元素,同辈元素

$("div span")     选择<div>里的所有的<span>元素(所有后代)
$("div>span")   选择<div>里的所有子元素<span>(只是子元素)
$(".one+div")    选择class为one的下一个<div>同辈元素
$(".one~div")    选择class为one的所有<div>同辈元素
如果想改变这些获取到的jQuery对象的背景色,只需要在后面加上:
.css("background","#bbffaa");

(3)过滤选择器

a1,基本过滤选择器

$("div:first")    所有<div>元素的第1个<div>
$("div:last")    所有<div>元素的最后一个<div>
$("input:not(.myClass)")  所有class不是myClass的<input>元素
$("input:even")  所有索引是偶数的<input>
$("input:odd")    所有索引是奇数的<input>
$("input:eq(1)")  索引为1的<input>
$("input:gt(1)")  索引大于1的<input>
$("input:lt(1)")   索引小于1的<input>
$(":header")      网页中所有的<h1><h2><h3>----
$("div:animated")   正在执行动画的<div>
$(‘:focus‘)               当前获得焦点的元素
说明:除了 :关键字  不能改,其他的元素都可以改。

b2,内容过滤选择器:

$("div:contains(‘我‘)")  选择含有文本"我"的<div>
$("div:empty")    不包含子元素(文本也算)的<div>
$("div:has(p)")    含有<p>元素的<div>
$("div:parent")    含有子元素(文本也算)的<div>

说明:除了 :关键字  不能改,其他的元素都可以改。

c3,可见性过滤选择器:

$(":hidden") 所有不可见元素,含<input type="hidden"/>,<div style="display:none;">,<div style="visibility:hidden;">等
$("input:hidden")  选择input不可见元素
$("div:visible")  选择所有可见的<div>元素

d4,属性过滤选择器:

[attribute]  $("div[id]") 所有拥有属性id的元素
[attribute=value]  $("div[title=test]")  所有属性title等于test的<div>
[attribute!=value]  $("div[title=test]")  所有属性title不等于test的<div>
[attribute^=value]  $("div[title^=test]")  所有属性title以"test"开始的<div>
[attribute$=value]  $("div[title$=test]")  所有属性title以"test"结束的<div>
[attribute*=value]  $("div[title*=test]")  所有属性title包含"test"的<div>
[attribute|=value]  $("div[title|=test]")  所有属性title等于"test"或以"test"为前缀(后面跟着连字符-)的<div>
[attribute~=value]  $("div[title~=test]")  所有属性title用空格分开包含"test"的<div>
[attribute1][attribute2][attributeN]  $("div[id][title$=‘test‘]")  所有属性title以"test"开始的<div>

为了区分如下有html元素:
(1)<div title="en">title为en的div元素</div>
(2)<div title="en-UK">title为en-UK为div元素</div>(3)<div title="english">title为english为div元素</div>
(4)<div title="en uk">title为en uk的div元素</div>
(5)<div title="uken">title为uken的div元素</div>例子如下:$(‘div[title^="en"]‘) 属性title以en开始的有:(1)(2)(3)(4)$(‘div[title*="en"]‘) 属性title包含en的有:(1)(2)(3)(4)(5)
$(‘div[title|="en"]‘) 属性title等于en或以en为前缀的有:(1)(2)
$(‘div[title~="en"]‘) 属性title用空格分隔的包含en的有:(4)
 

e5,子元素过滤选择器

(1)nth-child(even)选择父元素下的索引值为偶数的元素
(2)nth-child(odd)  选择父元素下的索引值为奇数的元素
(3)nth-child(index)选择父元素下的索引值为index的元素(从1开始)
(4)nth-child(3n) 父元素下索引值为3的倍数的元素(从1开始)
(5)nth-child(3n+1)父元素下索引值为3n+1的元素
(6):first-child 父元素下的第一元素  如$("ul li:first-child")选择ul下的第一个li元素
(7):last-child 父元素下的最后一个元素
(8):only-child 如果某元素下仅有唯一子元素,选择出来  如$("ul li:only-child") 在ul中选择是唯一子元素的li元素

f6,表单对象属性过滤选择器

:enabled $("#form1 :enabled") 选择id为form1的表单内的所有可用元素
:disabled $("#form2 :disabled")  选择id为form2的表单内的所有不可用元素
:checked  $("input:checked") 所有被选中的input元素(单选框和复选框)
:selected  $("select option:selected"),选择下拉列表被选中的所有元素

(4)表单选择器

:input $(":input")  所有<input><textarea><select><button>元素
:text  $(":text")    所有单行文本框
:password  $(":password")     所有密码框
:radio    $(":radio")    所有单选框
:checkbox    $(":checkbox")    所有多选框
:submit    $(":submit")    所有提交按钮
:image    $(":image")    所有图像按钮
:reset    $(":reset")    所有重置按钮
:button    $(":button")    所有按钮
:file    $(":file")    所有文件上传域
:hidden    $(":hidden")  所有不可见元素(前面已提过)

3  选择器注意事项

(1)对于 . # ( ] 等特殊字符,需要转义字符:  \\

(2)属性选择器中不再需要@符号,直接写为:$("div[title=‘test‘]")

(3)选择器中还有空格

$(‘.test :hidden‘) 带空格  选择class为test的元素里面的隐藏元素 如:
<div class="test">
    <div style="display:none;">aa</div>
</div>
选择的就是中间的那个元素

$(‘.test:hidden‘)  不带空格  选择class为test的隐藏元素  如:
<div class="test" style="display:none;>bb</div>
选择的就是这个元素

(4)is方法

jQuery的is方法常用来做判断
if($obj.is(":checked")){  //如果单选框或复选框被选中
}

if($obj.is(":visible")){  //如果$obj对象 可见
}

4,最后一个例子,实现全部产品和部分产品的切换显示:

html代码:

<body>

<div class="SubCategoryBox">
    <ul>
        <li><a href="#">佳能</a> <i> (30440) </i></li>
        <li><a href="#">索尼</a> <i> (27220) </i></li>
        <li><a href="#">三星</a> <i> (20808) </i></li>
        <li><a href="#">尼康</a> <i> (17821) </i></li>
        <li><a href="#">松下</a> <i> (12289) </i></li>
        <li><a href="#">卡西欧</a> <i> (8242) </i></li>
        <li><a href="#">富士</a> <i> (12545) </i></li>
        <li><a href="#">柯达</a> <i> (21121) </i></li>
        <li><a href="#">宾得</a> <i> (45415) </i></li>
        <li><a href="#">理光</a> <i> (4512) </i></li>
        <li><a href="#">奥林巴斯</a> <i> (45415) </i></li>
        <li><a href="#">明基</a> <i> (5451) </i></li>
        <li><a href="#">爱国者</a> <i> (5412) </i></li>
        <li><a href="#">其他品牌相机</a> <i> (4521) </i></li>    

    </ul>
</div>

<div class="showmore">
    <a href="more.html"><span>显示全部品牌</span></a>
</div>

</body>

jquery代码:

 <script type="text/javascript" language="javascript" >
 $(document).ready(function(){  //等待所有dom绘制完成后就执行
 $catogory=$(".SubCategoryBox ul li:gt(5):not(:last)");//选择出ul下索引大于5不包括最后一个的所有对象
 $catogory.hide();//隐藏

 $togglebtn=$("div.showmore > a");
 $togglebtn.click(function(){
 if($catogory.is(":visible")){
     $catogory.hide();
     $(this).find("span")    //$(this)不要写成$this
    .css("background","url(img/down.gif)no-repeat 0 0")     //添加样式
    .text("显示全部品牌");
    $("ul li").removeClass("promopted");    //去掉高亮样式显示
 }else{
    $catogory.show();
     $(this).find("span")
    .css("background","url(img/up.gif)no-repeat 0 0")     //添加样式
    .text("精简显示品牌");
    $("ul li").addClass("promopted");    //去掉高亮样式显示
 }//else
 return false;        //超链接不跳转

 }) //$togglebtn.click

 }); //$(document)
 </script>

总结:总算学完jquery选择器了,以前看到很多选择器就头大,不知道是什么,现在如果遇到不知道的,直接来这里查看就行了。

锋利的jQuery第二章,布布扣,bubuko.com

时间: 2024-12-23 19:49:43

锋利的jQuery第二章的相关文章

锋利的jQuery第一章

以前总是感觉js,html,css,jquery这些东西太繁杂,看着都头晕,想着做后台,不用管这些东西,可是工作之中发现,很多前台后台结合 的地方,比如通过ajax发送到后台,如果不懂得jQuery,感觉很被动,于是,我也不管那么多了,从现在开始学习jQuery了. 我喜欢看书本学习,以后博客将记录我学习的笔记: 1,window.reload()和$(document).ready()的区别: 2,有关菜单的代码: <!DOCTYPE html PUBLIC "-//W3C//DTD X

读《锋利的jQuery(第二版)》笔记

一下的数字表示第几个细节知识点.另外在<code></code>尖括号里包裹的表示是代码. 1)detach()和remove()一样,也是从DOM中去掉所有匹配的元素.但需要注意的是,这个方法不会把匹配的元素从jQuery对象中移除,因而可以在将来再使用这些匹配的元素.与remove()不同的是,所有绑定的事件.附加的数据等都会保留下来. 如果在替换之前,已经为元素绑定事件,替换后原先绑定的事件将会被替换的元素一起消失,需要在新元素上重新绑定事件. 2)jQuery提供了更简单的

jQuery第二章

一.jQuery选择器 jQuery的行为规则都必须在获取到元素后才能生效.来看一个简单的例子: <p class = “demo”>jQuery Demo</p> <script type = “text/javascript”> $(“.class”).click(function(){ alert(“jQuery demo!”); }) 本段代码的作用是为<p>元素设置一个onclick事件,当单击此元素时,会弹出一个对话框. 二.jQuery选择器

锋利的jquery第二版学习笔记

jquery系统学习笔记 一.初识:jquery的优势:1.轻量级(压缩后不到30KB)2.强大的选择器(支持css1.css2选择器的全部 css3的大部分 以及一些独创的 加入插件的话还可支持XPath)3.出色的Dom封装(简化原本复杂的操作)4.可靠的事件处理机制(跨浏览器兼容性)5.完善的Ajax操作(一个$.ajax()方法全部搞定)6.不污染顶级变量(只使用了一个名为jQuery的对象 其别名$也可随时让出其控制权 见解决和其它库混用时解决冲突部分)7.出色的浏览器兼容性(优秀的j

jQuery选择器集锦(读《锋利的jQuery(第二版)》所摘)

jQuery选择器分为基本选择器.层次选择器.过滤选择器和表单选择器. 过滤选择器可以分为基本过滤.内容过滤.可见性过滤.属性过滤.子元素过滤和表单对象属性过滤选择器. $("input:not(.myClass)")选取class不是myClass的<input>元素. $("input:even")选取索引是偶数的<input> 元素 $(":header")选取网页中所有的<h1>,<h2>,

锋利的jQuery 第一章

知识点梳理 1,常用的JavaScript库 Prototype 老牌的JS库了.YUI雅虎推的jS库.ExtJS,,,,.jQuery于2006年1月创立的开源项目.jQuery团队包括核心库.UI.插件.jQuery Mobile等 2,jQuery的优势 (1)   轻量级 (2)   强大的选择器 (3)   出色的DOM操作的封装 (4)   可靠的事件处理机制 (5)   完善的Ajax (6)   不污染顶级变量 (7)   出色的浏览器兼容性 (8)   链式操作方式 (9)  

JQuery第二章选择器

一.基本选择器 基本选择器是jQuery最常用的选择器,也是最简单的选择器,通过元素id ,class 标签名称来查找DOM元素(在网页中iD只能使用一次,id也是唯一的,但是class允许重复使用的) 1.id选择器 用法:$("#id名称");   返回单个元素的组成的集合 2.class(类选择器) 用法:$(".class");  返回集合元素      class就是样式名称 3.element(标签选择器) 用法:$("span,p,div&q

jQuery 第二章 实例方法 DOM操作取赋值相关方法

取赋值相关方法:   .html() .text() .val() .size() .addClass() .removeClass() .hasClass() .html() html方法干嘛的呢,底层原理 是用原生js的 innerHTML 实现的,接下来,来看一下怎么使用它, 有什么区别. 其实基本使用跟innerHTML 差不多,但是正常的jquery 方法来讲,$('ul li').html() 像这样,你选的是ul 下面的全部li,正常来讲,取出的值应该是 有多少个li  就取多少个

锋利的jQuery读书笔记---选择器

前段时间入手了锋利的jQuery(第二版),想着加强下自己的js能力,可前段时间一只在熟悉Spring和Hibernate.最近抽时间开始读这本书了,随便也做了些记录. 读书的过程是边看边代码测试,所以笔记和代码也就写到一起了.下面是选择器的记录: <!DOCTYPE html> <html> <head lang="zh"> <meta charset="UTF-8"> <script type="t