【问题标题】:jquery $(this).prev(".class") not workingjquery $(this).prev(".class") 不工作
【发布时间】:2011-12-24 22:22:49
【问题描述】:

鉴于这个简单的设置

<div class="parent">
   <div class="child">I'm spoiled</div>
</div>
<div class="aunt"></div>
<div class="uncle"></div>

<div class="parent">
   <div class="child">I'm spoiled</div>
</div>
<div class="aunt"></div>
<div class="uncle"></div>

当我检测到对“叔叔”类的点击时,我想获得最接近的前一个“.parent”的兄弟姐妹。我应该可以的

$( this ).prev( ".parent" ).children( ".child" ).text();

...但这会返回一个空白。

如果我这样做

$( this ).prev().prev().children( ".child" ).text();

...这会返回预期的结果:“我被宠坏了”

prev( [selector] ) 的使用有什么限制吗?

[更新]

.prevAll() 返回所有 previuos 类,所以

的结果
$( this ).prevAll( ".parent" ).children( ".child" ).text();

如果我点击第二个“.uncle”是不是“我被宠坏了我被宠坏了”,这不是我想要的结果。

我只需要最接近的前一个。

【问题讨论】:

    标签: jquery jquery-selectors


    【解决方案1】:

    来自 jquery 文档:

    .prev() 描述:获取匹配元素集中每个元素的前一个兄弟元素,可选地由选择器过滤。

    还有:

    要选择所有前面的兄弟元素,而不仅仅是前面的相邻兄弟元素,请使用 .prevAll() 方法。

    所以,你去吧,改用 .prevAll() 方法。 http://api.jquery.com/prev/

    【讨论】:

    • 更新了我的问题以反映为什么我不能使用 prevAll()
    • 使用 $( this ).prevAll( ".parent:first" ).children( ".child" ).text();
    • @George:这也是我的建议。
    • @George,谢谢,但如果我点击第二个叔叔,这将提供相同的答案......
    • 你试过 $( this ).prevAll( ".parent:last" ).children( ".child" ).text(); ?我不确定 jquery 解析 DOM 的顺序。
    【解决方案2】:

    那是因为这不是 prev 的本意。您正在尝试以 .prevAll() 应该工作的方式使用 prev。

    编辑:

    考虑到您的最新要求,我认为这样的事情会起作用:

    $(this).prevUntil(".parent").first().prev().children( ".child" ).text()
    

    【讨论】:

    • 更新了我的问题以说明为什么 .prevAll() 不能解决我的问题。
    • 谢谢约瑟夫,这个解决方案解决了它,但没有我想要的那么顺利:)
    【解决方案3】:

    prev() 只返回第一个前面的元素。

    试试:

    $( this ).prevAll( ".parent:first" ).children( ".child" ).text();
    

    【讨论】:

      【解决方案4】:

      这可能是更好的方法:

      var this = $(this);
      var.parent('.parent').prev().children('.children').text();
      

      【讨论】:

        猜你喜欢
        • 2011-07-24
        • 2018-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-13
        • 2021-05-31
        • 1970-01-01
        • 2014-08-02
        相关资源
        最近更新 更多