最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

jquery遍历之parent()和parents()的区别及parentsUntil()方法详解_jquery

来源:动视网 责编:小采 时间:2020-11-27 21:16:43
文档

jquery遍历之parent()和parents()的区别及parentsUntil()方法详解_jquery

jquery遍历之parent()和parents()的区别及parentsUntil()方法详解_jquery:.parent(selector) 获得当前匹配元素集合中每个元素的父元素,由选择器筛选(可选)。 .parents(selector) 获得当前匹配元素集合中每个元素的祖先元素,由选择器筛选(可选)。 如果给定一个表示 DOM 元素集合的 jQuery 对象,.parents()
推荐度:
导读jquery遍历之parent()和parents()的区别及parentsUntil()方法详解_jquery:.parent(selector) 获得当前匹配元素集合中每个元素的父元素,由选择器筛选(可选)。 .parents(selector) 获得当前匹配元素集合中每个元素的祖先元素,由选择器筛选(可选)。 如果给定一个表示 DOM 元素集合的 jQuery 对象,.parents()


.parent(selector) 获得当前匹配元素集合中每个元素的父元素,由选择器筛选(可选)。

.parents(selector) 获得当前匹配元素集合中每个元素的祖先元素,由选择器筛选(可选)。

如果给定一个表示 DOM 元素集合的 jQuery 对象,.parents() 方法允许我们在 DOM 树中搜索这些元素的祖先元素,并用从最近的父元素向上的顺序排列的匹配元素构造一个新的 jQuery 对象。元素是按照从最近的父元素向外的顺序被返回的。.parents() 和 .parent() 方法类似,不同的是后者沿 DOM 树向上遍历单一层级。

这两个方法都可以接受可选的选择器表达式,与我们向 $() 函数中传递的参数类型相同。如果应用这个选择器,则将通过检测元素是否匹配该选择器对元素进行筛选。


下面引用个例子
代码如下:

  • I

  • II

  • A

  • B

  • 1

  • 2

  • 3



  • C



  • III



  • 如果我们从项目 A 开始,则可找到其祖先元素
    代码如下:
    $('li.item-a').parents().css('background-color', 'red');

    此次调用的结果是,level-2 列表、项目 II 以及 level-1 列表等元素(沿 DOM 树一路向上直到 )设置红色背景。由于我们未应用选择器表达式,父元素很自然地成为了对象的一部分。如果已应用选择器,则会在包含元素之前,检测元素是否匹配选择器。由于我们未应用选择器表达式,所有祖先元素都是返回的 jQuery 对象的组成部分。如果已应用选择器,则只会包含其中的匹配项目。

    如果我们从项目 A 开始,则可找到其父元素:
    代码如下:
    $('li.item-a').parent().css('background-color', 'red');

    此次调用的结果是,为 level-2 列表设置红色背景。由于我们未应用选择器表达式,父元素很自然地成为了对象的一部分。如果已应用选择器,则会在包含元素之前,检测元素是否匹配选择器。

    下面在看一个例子
    代码如下:
    body
    one
    hello
    three

    p
    tonsh






    思考:
    代码如下:
    $("a").parent()
    $("a").parents()
    $("a").parents("div:eq(0)")
    var id=$("a").parents("div:eq(1)").children("div:eq(0)").html();

    例三
    代码如下:






    代码如下:
    $('p').parent()
    $('p').parent('.a')
    $('p').parent().parent()
    $('p').parents()
    $('p').parents('.a')

    下面看一下以前项目中使用的例子
    代码如下:
    if(mysql_num_rows($query)){
    while($arr=mysql_fetch_array($query)){
    echo <<

    $arr[id]
    $arr[log]
    $arr[ip]
    $arr[time]


    admin;
    }//while end;
    }else{
    echo "暂无登陆日志";
    }

    jquery相关代码
    代码如下:
    //删除选中日志
    $(".delcheckbox").click(function(){
    var str='';
    $(".tab input[name=checkbox]:checked").each(function(){
    str+=$(this).val()+',';
    });
    str=str.substring(0,str.length-1);
    if(chk_Batch_PKEY(str)){
    art.dialog.confirm('你确认删除选中的日志吗?',function(){
    $.post("myRun/managerlog_del.php",{id:str},function(tips){
    if(tips=='ok'){
    art.dialog.through({title:'信息',icon:'face-smile',content:'删除成功',ok:function(){art.dialog.close();location.reload();}});
    }else{
    art.dialog.tips('删除失败');
    }
    });
    return true;
    });
    }else{
    art.dialog.through({title:'信息',icon:'face-sad',content:'请选择删除的日志',ok:function(){art.dialog.close();}});
    }
    }).addClass("pointer");


    //del event
    $(".del").bind("click",function(event){
    var _tmpQuery=$(this);
    var id=$("input[name='id']",$(this).parents("form:first")).attr("value");
    art.dialog.confirm('你确认删除该日志吗?',function(){
    $.post("myRun/managerlog_del.php",{id:id},function(tips){
    if(tips=='ok'){
    art.dialog.tips('成功删除');
    _tmpQuery.parents('tr:first').hide();
    }else{
    art.dialog.tips(tips,5);
    }
    });
    return true;
    });
    });

    涉及到的知识点:

    var id=$("input[name='id']",$(this).parents("form:first")).attr("value");

    参考文献:
    parent():http://www.w3school.com.cn/jquery/traversing_parent.asp

    parents():http://www.w3school.com.cn/jquery/traversing_parents.asp


    parentsUntil() 方法

    定义:parentsUntil() 获得当前匹配元素集合中每个元素的祖先元素,直到(但不包括)被选择器、DOM 节点或 jQuery 对象匹配的元素。

    其实,parentsUntil()方法,以及nextUntil()方法、prevUntil()方法,原理一样。唯一不同的是nextUntil()是往下,prevUntil()是往上(同辈元素),parentsUntil()也是往上(找祖先元素)

    下面看一个例子:
    代码如下:






  • I

  • II

  • A

  • B

  • 1

  • 2

  • 3



  • C



  • III


  • $("li.item-a").parentsUntil(".level-1").css("background-color", "red");

    $("li.item-2").parentsUntil( $("ul.level-1"), ".yes" )
    .css("border", "3px solid blue");



    得到结果如下:

    分析:
    代码如下:
    $("li.item-a").parentsUntil(".level-1").css("background-color", "red");

    代码如下:
    -->不符合。其实它是符合li.item-a的祖先元素的。但是根据parentsUntil()方法定义,是不包括选择器、DOM节点或jquery对象所匹配的元素的

  • I
  • -->不符合,这是它祖先元素的同辈元素。并不是li.item-a的祖先元素。
  • II -->符合
    -->符合
  • A
  • -->从这开始往上找其祖先元素。
  • B

  • 1

  • 2

  • 3



  • C



  • III



  • 再来看第二个语句:
    代码如下:
    $("li.item-2").parentsUntil( $("ul.level-1"), ".yes" ).css("border", "3px solid blue");

    代码如下:
    -->是其祖先元素 且又满足选择器表达式".yes",但是根据parentsUntil()方法定义,是不包括选择器、DOM节点或jquery对象所匹配的元素的
  • I
  • 不匹配,不是其祖先元素。
  • II-->是其祖先元素 不满足
    -->是其祖先元素 满足选择器表达式".yes" [所以,最终匹配到该节点,得到如上图所示的蓝色边框效果]
  • A

  • B -->是其祖先元素
    -->是其祖先元素
  • 1

  • 2
  • -->从这开始往上找其祖先元素。
  • 3



  • C



  • III


  • 文档

    jquery遍历之parent()和parents()的区别及parentsUntil()方法详解_jquery

    jquery遍历之parent()和parents()的区别及parentsUntil()方法详解_jquery:.parent(selector) 获得当前匹配元素集合中每个元素的父元素,由选择器筛选(可选)。 .parents(selector) 获得当前匹配元素集合中每个元素的祖先元素,由选择器筛选(可选)。 如果给定一个表示 DOM 元素集合的 jQuery 对象,.parents()
    推荐度:
    标签: jQuery 遍历 jq
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top