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

时间:2013-03-18 02:28:29

标签: jquery

所有,我是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>
...

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

ul

但是这段代码看起来很冗长,所以我的问题是有没有简单的方法或其他选择器语法我不知道而不是使用$(".layoutThumbneil li").bind("click",function(){alert($(this).parent().parent().parent().html());}) 来轻松实现?感谢。

6 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

您可以将parents与选择器一起使用,但如果它们很重要,您应该将id提供给ul元素。

将function(){..}更改为

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

答案 2 :(得分:1)

您可以尝试这样做(它将选择父ul元素):

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

答案 3 :(得分:1)

选择器应该是.layoutThumbneil li,而不是.LayoutThumbneil li给定您的HTML。

尝试:

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

小提琴here

答案 4 :(得分:1)

尝试使用jQuery&#39; .parents()与jQuery&#39; s .find()一起上树,然后返回树下。

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

答案 5 :(得分:1)

像这样使用最近..

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