繁体   English   中英

Jquery选择器 - 如何选择当前元素的第一个指定父项

[英]Jquery selector — how to select the first of specified parents of current element

所有,我是Jquery的新手,我可以将jquery应用于基本用法。 但是我不专业。 我坚持这个问题。谢谢。

假设你有这样的源html代码。

...
    <fieldset class="ui-helper-reset">
    <ul>
        <li>
            <label>Select Layout Template:</label>
            <span class="spanSelectedLayout"></span>
        </li>
        <li>
            <ol class="layoutThumbneil ui-selectable">
                <li class="ui-state-default ui-selectee">
                    <img class="ui-selectee" src="designer/templates/thumbnails/NullTemplate.PNG" alt="">
                </li>
                <li class="ui-state-default ui-selectee ui-selected">
                    <img class="ui-selectee" src="designer/templates/thumbnails/2RowsTemplate.PNG" alt="">
                </li>
                <li class="ui-state-default ui-selectee">
                    <img class="ui-selectee" src="designer/templates/thumbnails/2ColsTemplate.PNG" alt="">
                </li>
            </ol>
        </li>
    </ul>
    </fieldset>
...

如果当前元素是olli之一,并且我想选择ul元素,那么假设它表示当前元素的第一个指定父元素。 基本上,我可以像下面这样

$(".layoutThumbneil li").bind("click",function(){alert($(this).parent().parent().parent().html());})

但是这段代码看起来很冗长,所以我的问题是有没有简单的方法或其他选择器语法我不知道而不是使用parent()来轻松实现它? 谢谢。

您可以使用.closest()方法:

$(".layoutThumbneil li").on("click",function() {
     var html = $(this).closest('ul').html();
});

你可以使用带有选择器的parents ,但是如果它们很重要,你应该给ul元素id

将function(){..}更改为

function(){ alert($(this).parents('ul') .. )}

您可以尝试执行此操作(它将选择父ul元素):

$(".LayoutThumbneil li").bind("click", function() {
    alert($(this).parents("ul").html());
});

选择器应该是.layoutThumbneil li而不是.LayoutThumbneil li给出你的HTML。

尝试:

$(".layoutThumbneil li").bind("click", function () {
    console.log($(this).closest("ul").html());
});

在这里小提琴

尝试使用jQuery的.parents()与jQuery的.find()结合使用,使之回到树上。

$(".layoutThumbneil li").bind("click", function() {
  var parent = $(this).parents('.ui-helper-reset');
  var first_ul = parent.find('> ul');
});

使用最接近这样..

$(".LayoutThumbneil li").bind("click",function(){
    alert(
        $(this).closest('ol') // this is to check if it has a parent ol
          .closest('ul').html()
    );
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM