1. /************ 查找父元素 *************/
  2. //closest()方法
  3. $("#mytd1").bind("click",function(){
  4. alert($(this).closest("table").attr("id")); //table1
  5. alert($(this).closest("tr").attr("id"));//mytr1
  6. console.info($(this).closest());//本身
  7. console.info($(this).closest("td"));//mytd1 返回元素本身。
  8. console.info($("td").closest("tbody"));//返回三个tbody
  9. /**
  10. *官方解释:从元素本身开始,逐级向上级元素匹配,并返回最先匹配的元素。
  11. *closest会首先检查当前元素是否匹配,如果匹配则直接返回元素本身。如果不匹配则向上查找父元素,一层一层往上,直到找到匹配选择器的元素。如果什么都没找到则返回一个空的jQuery对象。
  12. */
  13. });
  14. //parent()方法
  15. $("#mytd2").bind("click",function(){
  16. //alert($(this).html()); //$(this).html()是21 (this).attr("id")是mytd2
  17. alert($(this).parent().parent().parent().attr("id"));
  18. //.parent()是tr 第二个.parent是tbody。即使没有tbody标签,找到的也是tbody 第三个.parent()是table
  19. console.info($("tr").parent());//返回三个dbody:dbody1,dbody2-1,dbody2-2.同理,如果改成td,则返回好多tr
  20. console.info($("table").parent());//返回两个div:div1,div2。
  21. console.info($("table").parent("#divn"));//div1
  22. //document.write("第一个parent的id:" + $(this).parent().attr("id") + "。 第二个parent的id是:"+$(this).parent().parent().attr("id") + "。 第三个parent的id是:"+$(this).parent().parent().parent().attr("id"));
  23. /**parent官方解释:取得一个包含着所有匹配元素的唯一父元素的元素集合。
  24. *
  25. */
  26. });
  27. //parent("选择器") parents("选择器")
  28. $("#mytd3").bind("click",function(){
  29. $("p").parent("#div1").css("background", "yellow");//这里换成了p标签。不知道为什么用this找不到元素
  30. //原因:$(this).parent() 选择的为td3,在td3里面继续找div1自然找不到
  31. //alert($(this).parent("#div").attr("id"));//undefined
  32. alert($(this).parents("div")[0].attributes.id.value);//div1 注意一个parent parents
  33. alert($(this).parents("div")[1].attributes.id.value);//div0
  34. console.info($(this).parents("div"));//div1 div0 topdiv 向上找所有的div.可以一层一层向上找,返回所有符合条件的
  35. /** parents官方解释:
  36. * 取得一个包含着所有匹配元素的祖先元素的元素集合(不包含根元素)。可以通过一个可选的表达式进行筛选。
  37. * 语文不好,看着真心弄不懂~~~ 泪奔,见下面解释.
  38. */
  39. });
  40. /************ 查找子元素 *************/
  41. //查找table2的td元素 find()
  42. $("#sectd1").bind("click",function(){
  43. alert($("#table2").find("td").length);//和$("#table2 td")效果一样
  44. /* $("#table2").find("td").each(function(index,element){
  45. alert($(element).text());
  46. }); */
  47. //alert($("tr").find("td").length); //7
  48. console.info($("#table2 td"));
  49. console.info($("tr").find("td"));//返回所有匹配的td
  50. /**官方解释:
  51. * 搜索所有与指定表达式匹配的元素。
  52. */
  53. });
  54. //children()
  55. $("#sectd2").bind("click",function(){
  56. alert($("#table2").children().children().children("td[id='sectd2']").html());
  57. //children() 是 tbody children()是 tr children("td[id='sectd2']")是td
  58. console.info($("div[name='mydiv']").children());//p table1 p table2.返回name为mydiv的所有 子元素
  59. /**官方解释:
  60. *取得一个包含匹配的元素集合中每一个元素的所有子元素的元素集合。
  61. */
  62. });
  63. // js的 children[]
  64. $("#sectd3").bind("click",function(){
  65. var table = document.getElementById("table2");
  66. alert(table.children[0].children[2].children[0].innerHTML);
  67. //children[0] 是 tbody children[2]是 第三行的tr children[0]是td
  68. console.info(table.children);//两个tbody2-1 tbody2-2
  69. console.info(table.children[0].children);//三个tr
  70. });



总结:

closest()
一层一层向上找,返回最先匹配上的元素。
$(this).closest("td")
$("td").closest("tbody")
因为td是多个元素,所有最先匹配上的tbody也是多个

parent()返回唯一父元素(即:向上只找一层)。如果选择器选择多个对象,则返回父元素数组。需要在数组里面继续选择,则使用parent("#id"),parent(".className")
什么是唯一父元素:td的父亲是tr,tr的父亲是tbody,tbody的父元素是table...
eg:
$("tr").parent() 一个或者多个tbody
$("table").parent("#div1");//div1。

parents()
一层一层向上找,返回所有匹配上的元素。

find()
$("#table2").find("td")和$("#table2 td")效果一样,这一句话应该足够了。

children()和parent()反之。
每一个元素的所有子元素的元素集合。
$("div[name='mydiv']").children()
p table1 p table2

children属性和jquery的children()类似,返回紧挨的下一级并列的子元素

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

对象都是this的话,可能更容易理解:

closest(“”) 一层一层向上,找到一个匹配就返回

parent()  紧挨自己的上一个元素

parents() 一层一层向上,找到所有的

find()

$("#table2").find("td")   eg:$("#table2 td")

children() 紧挨自己的下一个元素


jquery 查找元素的更多相关文章

  1. jQuery 查找元素1

    jQuery 查找元素1 1. id // 通过id查找 $('#id') 2. class <div class='c1'></div> // 通过class查找 $('.c ...

  2. jQuery 查找元素2

    jQuery 查找元素2 :first <ul> <li>list item 1</li> <li>list item 2</li> < ...

  3. jquery查找元素

    一:查找元素 * 所有元素 element 该名称的所有元素(p,input) #id 拥有指定id属性的元素 .class 拥有所有指定class属性的元素 selector1,selector2 ...

  4. jquery 查找元素,id,class

    查找元素下的class 带有.pageactive的a标签 $('a.pageactive') 标签a和..pageactive不要有空格,有空格找不到 ======================= ...

  5. <<< Jquery查找元素、选择器使用方法总结

    $("#myDiv"); //根据给定的ID匹配一个元素,用于搜索id 属性中给定的值,id属性必须是唯一的 $("div"); //根据给定的元素名匹配所有元 ...

  6. jquery 查找元素,并判断隐藏或显示

    html <div class="panel-heading"> <h4 class="panel-title"> <a data ...

  7. jquery查找父元素、子元素(个人经验总结)

    使用js或者jquery查找父元素.子元素经常遇到.可是用起来总容易混淆,这里统一总结了一下,以后用起来相信会方便好多 这里jquery向上查找父元素 用到的方法:closest() parents( ...

  8. Jquery下控制backgroundPosition位置的问题/jquery查找data id相等的元素

    1:想通过控制backgroundPosition 来实现动态效果: $(this).animate({"background-positionY":-13},1); //但是火狐 ...

  9. jquery查找frameset框架内iframe的元素

    老系统还幸存有过时的frameset框架,维护升级工作需要对其内部的iframe中的元素进行相关操作.使用jquery查找子iframe页面内的元素时,总找不到目标元素.后来发现少了contents ...

随机推荐

  1. 利用WMI检测电脑硬件信息,没办法显示cpu的信息

    但你要给某些系统或软件加密时,需要了解到服务器的硬件信息时,系统和软件会利用WMI检测硬件信息, 而有时我们会遇到检测不到CPU的型号信息,如图 此时的解决方法: 1.确定“服务”里启动了WMI 2. ...

  2. 文字尺寸、宽高的测量 Paint FontMetrics

    Paint.FontMetrics类简介 Google文档中的描述: ) throw new IndexOutOfBoundsException(); if (bounds == null) thro ...

  3. 关于Javascript你可能不知道的事

    NaN表示一个不能产生正常结果的运算结果.它不等于任何值,包括它自己.可以用isNaN(number)来检测. 同Java中的字符串一样,JS中的字符串是不可变的.也就是说一旦字符串被创建,就无法改变 ...

  4. java设计模式0--设计模式简介

    设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 设计模式的起源 软件 ...

  5. mysql5.0.x统计每秒增删改查替换数及系统每秒磁盘IO

    转载自:http://blog.chinaunix.net/uid-9370128-id-393082.html 1. mysql 5.0.x 统计每秒增,删,改,查,替换数  mysql 的show ...

  6. 我追一个处女座的女孩快两个月了,我之前聊得很好,她说过有空call我去看电影,过了一个月她就不理我了,我喜欢她, 我是程序员,百度发不了那么多字。

    她刚刚进公司的时候,公司组织去打球,我叫她一起去她也去了,我和她聊了很多,聊得很自然,很开心,如我是哪个学习毕业的 我出来工作多久了等,她也聊了 她自己好多,她现在在读大学,只有周日上一天课那种. 我 ...

  7. 时间记录APP———Time Meter

    关注过时间管理的人可能都听过大名鼎鼎的柳比歇夫的时间记录法,在几年前,大多人都推荐纸笔的记录方法,但是纸笔总是会忘,越来越智能的手机可是总不会忘得,所以我始终在寻找一款手机端好用的APP. 不管是时间 ...

  8. 微信/易信公共平台开发(四):公众号调试器 (仿真微信平台,提供PHP源码)

    开发微信/易信公共平台时,调试往往很麻烦,一般只能在手机上边试边改, 或在服务器写日志.当你的服务器脚本有Bug时,手机上没有显示,追查是不容易的.我在开发过程中,编写了一个调试器, 能仿真微信/易信 ...

  9. 【划分树+二分】HDU 4417 Super Mario

    第一次 耍划分树.. . 模板是找第k小的 #include <stdio.h> #include <string.h> #include <stdlib.h> # ...

  10. 【Oracle】查看正在运行的存储过程

    select name from v$db_object_cache where locks > 0 and pins > 0 and type='PROCEDURE';