【问题标题】:.prev() method not working [duplicate].prev() 方法不起作用[重复]
【发布时间】:2012-05-14 09:39:58
【问题描述】:

可能重复:
jquery find closest previous sibling with class

下面给出的代码运行良好

<!DOCTYPE html>
<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
  <div><span>Hello</span></div>

  <p class="selected">Hello Again</p>
  <p>And Again</p>
<script>$("p").prev(".selected").css("background", "yellow");</script>

</body>
</html>

但是当我将 .selected 移到顶部(如下所示)时,它不起作用。谁能告诉我如何让它为我工作并在第二种情况下从 .prev() 方法中获取 .selected 元素无需操作 html

<!DOCTYPE html>
<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>

<p class="selected">Hello Again</p>//Moved to top
<div><span>Hello</span></div>

  <p>And Again</p>
<script>$("p").prev(".selected").css("background", "yellow");</script>

</body>
</html>

【问题讨论】:

  • 好吧,.selected 不再是另一个 p 元素的前一个兄弟,所以它不起作用也就不足为奇了。
  • 是的,但我仍然希望它被选中
  • 如果我有多个选择然后:第一个选择器将给出最近的 .selected 到 p 或最远的 .selected 到 p
  • 试试吧 ;) 顺便说一句,重复问题的标题是 " jquery find closest previous兄弟与类"
  • 抱歉让so的数据库还原了

标签: javascript jquery html class


【解决方案1】:

您需要使用.prevAll() 而不是.prev()。后者仅检查您的情况下的直接前任 divprevAll() 但是会检查 all 前辈,以便找到您的元素。如果您有多个与您的选择器匹配的前任,请使用.prevAll('.selected').first() 仅获取最近的一个。

演示:http://jsfiddle.net/ThiefMaster/GnEK5/

【讨论】:

  • .prevAll(".selected:first") 或 .prevAll(".selected:last")
  • @AnkitGautam:那行不通。在这两种情况下,它都匹配最远的元素(这很奇怪):jsfiddle.net/ThiefMaster/GnEK5/1
  • 奇怪...prevAll(".selected").first() 可以工作。可能是 jQuery 实现的改变?但是:first.first() 应该以同样的方式工作......
  • Mmh...:first 的文档说:“所选元素按照它们在文档中出现的顺序”,所以也许这就是原因...我更新了另一个问题中接受的答案。
  • :last 应该可以工作..在我的例子中不是这样
【解决方案2】:

你可以试试

$('p').prevAll('.selected');

【讨论】:

  • 不。 JavaScript 代码在它所引用的元素之后,所以没问题。看看我的 cmets...
猜你喜欢
  • 2020-08-17
  • 2014-05-13
  • 1970-01-01
  • 2014-08-22
  • 1970-01-01
  • 2013-01-05
  • 2015-08-27
  • 2018-08-25
  • 2018-09-12
相关资源
最近更新 更多