您当前的位置: 站长圈 > 网页前端

jquery的dom操作(1)

来源:站长圈|0 作者:adminzzq 点击: 0
一、前面内容的复习
jquery的选择器选择dom元素

(一)、基本选择器

 选择器  描 述  返回  示例
 #id  根据给定id匹配一个元素  单个元素  $("#test") 选取id为test的元素
 .class  根据给定类名匹配一个元素  集合元素  $(".test") 选取class为test的元素
 element  根据给定元素名匹配一个元素  集合元素  $("p") 选取p元素
 selector1,selector2...selectorN  将每一个选择器匹配到元素合成后一起返回  集合元素  $("div , span ,p , myClass")选取所在div span 和拥有class为myClass的标签的一组元素
 *  匹配所有元素  集合元素  $("*") 选取所在的元素

 

 

(二)、层次选择器

 选择器  描 述  返回  示例
 $("ancestor descendant")  选取ancestor元素里的所有descendant(后代)元素  集合元素  $("div span")选取div里面的所有span元素
 $("parent > child")  选取parent元素下的child(子)元素。  集合元素  $("div > span")选取div元素下的元素名是span的子元素
 $("prev + next")  选取紧接在prev元素后的next元素  集合元素  $(.one + div)选取class为one的下一个div元素
 $("prev~siblings")  选取 prev 元素之后的所有siblings元素  集合元素  $("#one~div")选取id为two的元素后面的所有div兄弟元素

 

可以用next()方法来代替$("prev + next")

$(".one+div") <==> $(".one").next("div");

 

可用nextAll()代替$("prev~siblings")

$("#prev~div") <==> $("#prev").nextAll("div");

 

siblings()方法与前后位置无关,只要是同辈节点就能匹配。

 

(三)、过滤选择器

1、基本过滤选择器

 选择器  描 述  返回  示例
 :first  选取第1个元素  单个元素  $("div:first")
 :last  选取最后一个元素  单个元素  $("div:last")
 :not(selector)  去除所有与给定选择器匹配的元素  集合元素  $("input:not(.myClass)")
 :even  选取索引是偶数的所有元素,索引从0开始  集合元素  $("ul li:even")
 :odd  选取索引是奇数的所有元素,索引从1开始  集合元素  $("ul li:odd")
 :eq(index)  选取索引等于index的元素,index从0开始  单个元素  $("ul:eq(3)")
 :gt(index)  选取索引大于index的元素,index从0开始,不包括index  集合元素  $("ul li:gt(3)")
 :lt(index)  选取索引小于index的元素,index从0开始,不包括index  集合元素  $("ul li:lt(3)")
 :header  选取所有标题元素,如:h1 h2 h3...  集合元素 $(":header") 
 :animated  选取当前正在执行动画的所有元素  集合元素  $("div:animated")

 

 

2、内容过滤选择器

 选择器  描述  返回  示例
 :contains(text)  选取含有文本内容text的元素  集合元素  $("div:contains('我')")
 :empty  选取不包含子元素或文本的空元素  集合元素  $("div:empty")
 :has(selector)  选取含有选择器所匹配元素的元素  集合元素  $("div:has(p)")
 :parent  选取含有子元素或文本的元素  集合元素  $("div:parent")

 

 

3、可见性过滤选择器

 选择器  描述  返回  示例
 :hidden  选取所有不可见元素  集合元素  $(":hidden")
 :visible  选取所有可见元素  集合元素  $("div:visible")

 

$(":hidden")==》选取所有不可见元素。包括:  、

  、
等元素。

 

 

4、属性过滤选择器

 选择器  描述  返回  示例
 [attribute]  选取拥有此属性的元素  集合元素  $("div[id]")
 [attribute = value]  选取属性值为value的元素  集合元素  $("div[title=test]")
 [attribute != value]  选取属性值不等于value的元素  集合元素  $("div[titil!=test]")
 [attribute ^= value]  选取属性值以value开始的元素  集合元素  $("div[titil^=test]")
 [attribute $= value]  选取属性值以value结束的元素  集合元素  $("div[titil$=test]")
 [attribute *= value]  选取属性值含有value值的元素  集合元素  $("div[titil*=test]")
 [selector][selector2][selectorN]

 用属性选择器合并成一个复合属性选择器,满足多个条件。

 集合元素

 $("div[id][title=test]")

选取拥有属性id , 并且属性title 等于test的div元素

 

5、子元素过滤选择器

 选择器  描述  返回  示例
 :nth-child(index/even/odd)

 选取每个父元素下的第index个子元素或奇偶元素

   index从1开始

 集合元素  $("ul li:nth-child(3)")
 :first-child  选取每个父元素的第1个子元素  集合元素  $("ul li:first-child")
 :last-child  选取第个父元素下的最后一个子元素  集合元素  $("ul li:last-child")
 :only-child

 如果某个元素是它父元素中惟一的子元素,那么将会

被匹配。如果父元素中含有其它元素,刚不会匹配

 集合元素  $("div:only-child")

:nth-child(even) =>选取每个父元素下的偶子元素

:nth-child(odd) =>选取每个父元素下的奇子元素

:nth-child(3n) =>选取每个父元素下的索引值是3倍数的元素(n从0开始)

 

6、表单对象属性过滤选择器

 选择器  描述  返回值  示例
 :enabled  选取所有可用元素  集合元素  $("#form1:enabled")
 :disabled  选取所有不可用元素  集合元素  $("#form1:disabled")
 :checked

 选取所有被选中的元素

(单选框、复选框)

 集合元素  $("input:checked")
 :selected

 选取所有被选中的选项元素

(下拉列表)

 集合元素  $("select:selected")

 

(四)、表单选择器

 选择器  描述  返回  示例
 :input  选取所有input 、textarea 、select 、button元素  集合元素  $(":input")
 :text  选取所有的单行文本框  集合元素  $(":text")
 :password  选取所有的密码框  集合元素  $(":password")
 :radio  选取所有的单选框  集合元素  $(":radio")
 :checkbox  选取所有的多选框  集合元素  $(":checkbox")
 :submit  选取所有的提交按钮  集合元素  $(":submit")
 :image  选取所有的图像按钮  集合元素  $(":image")
 :reset  选取所有的重置按钮  集合元素  $(":reset")
 :button  选取所有的按钮  集合元素  $(":button")
 :file  选取所有的上传域  集合元素  $(":file")
 :hidden  选取所有的不可见元素  集合元素  $(":hidden")


二、对dom元素进行操作
1、attr() 查找或设置元素的属性
$obj.attr('属性');只有1个参数时,返回的是$obj这个对象的属性值

路航网络培训


<script type="text/javascript">
alert($('h1:first').attr('class'));//结果是title
</script>
分析:这里的$('h1:first')就是找到h1这个对象,为什么不是$('h1')呢?因为这样找到的是一个对象的集合,也就是页面中所有的h1,即使页面中只有1个h1也是一样。attr('class')是找对象的class属性值。
$obj.attr('属性,'值');有2个参数时,可以设置或者改变$obj这个对象的属性值
$('h1:first').attr('class','t');
\
分析,这里已经改变了原来class的属性title为t了。如果你加个两条样式你就可以看见字体颜色从红色变成绿色了:


2、html() 改变元素内容
$obj.html()当无参数时,返回的是$obj的html代码

路航网络培训


<script type="text/javascript">
alert($('h1:first').html());//结果是路航网络培训
</script>
$obj.html()当有1个参数时,设置或改变$obj的html代码

路航网络培训


<script type="text/javascript">
$('h1:first').html('拥有优秀的师资团队');
</script>
\
小实例:某客户觉得网站的“79折”应该改成“7.9折”,假设这个折扣数已经动态生成了。

79折


<script type="text/javascript">
var $obj=$('h1:first');
var str=$obj.html();
var temp=parseInt(str)/10;
$obj.html(temp+'折');
</script>
分析:$obj.html()就是获取h1里面的内容,也就是“79折”,parseInt(str)就是把字符串“79折”转换成整数“79”,再除以10,变成7.9,再把这个值连接上字符串“折”放进h1里,改变h1的html为“7.9折”

3、$('') 创建元素
$('用户名不可用')
用jq创建元素就这么简单,如果用js来创建以上的节点要怎么做呢,看看吧:
var obj=document.creatElement('span');
obj.serAttribute('class','warn');
var text=document.createText('用户名不可用');
obj.append(text);

4、插入节点
(1)$obj.append($obj1) 在$obj里插入子元素$obj1,并且添加在最后(向每个匹配的元素内部追加内容)
小实例:用户填写用户名时,创建一个span因素,少于6个字符提示红色的“用户名可用”,正确输入提示绿色的“用户名可用”








<script type="text/javascript">
var $obj=$('#username');
$obj.blur(function(){
var val=$obj.val();
alert(val);
var msg=val.length>6?'用户名可用':'用户名不能少于6个字符';
var cla=val.length>6?'ok':'error';
var span=$(''+msg+'');
$obj.parent().append(span);
})
</script>
解析:
$obj=$('#username')是用id得到了那个文本框的jq对象,
$obj.blur()是对这个文本框对象采用了失去焦点的方法,也就是当光标离开文本框后要执行的方法,它的参数是一个函数。
val=$obj.val()是获取了用户输入文本框的字符,
val.length>6?'用户名可用':'用户名不能少于6个字符'是个三目运算,意思是val.length得到输入字符的长度如果大于6个字符就得到“用户名可用”这个字符串,否则就得到“用户名不能少于6个字符”;
val.length>6?'ok':'error'也是一样,当val.length得到输入字符的长度如果大于6个字符就得到“ok”这个字符串,否则就得到“error”,
$(''+msg+'')是创建了一个span元素,加上了刚才根据用户输入字符的长度不同而不同的属性值作为class属性值和文本内容。这时候这个创建的元素还在内存里。
$obj.parent().append(span)最后,在文本框的父元素li里把刚才创建在内存里的span元素添加为最后一个子节点。

(2)$obj1.appendTo($obj) 将$obj1作为子元素插入到$obj里
$(''+msg+'').appendTo(parent());