【问题标题】:jquery find closest previous sibling that does not have classjquery找到最近的没有类的上一个兄弟
【发布时间】:2013-11-12 10:40:35
【问题描述】:

我很难尝试使用 jQuery 获取不包含类“子节”的“幻灯片”类最接近的前一个元素

示例 HTML:

<section id="p1" class="slide"></section>
<section id="p2" class="slide"></section>
<section id="p3" class="slide"></section> <!--I AM TRYING TO GET THIS ELEM -->
<section id="p31" class="slide subsection"></section>
<section id="p32" class="slide subsection"></section> <!--I AM HERE -->
<section id="p4" class="slide"></section>

我试过了:(其中 $subsection 是上面指出的元素)

var $slide = $subsection.prev('.slide').not('.subsection');
var $slide = $subsection.prev('.slide:not(".subsection")');
var $slide = $subsection.prev('.slide').not("[class='subsection']");
var $slide = $subsection.prev('.slide:not([class="subsection"])');

现在我发现 prev() 只选择了一个前一个元素然后停止,但是 prevUntil 也不起作用?

var $slide = $subsection.prevUntil('.slide').not('.subsection');

我也试过了:

var $slide = $subsection.prevAll('.slide').not('.subsection');

但这让我得到了第一个 ID 为 p1 的幻灯片元素。

如果有人有任何提示,我将不胜感激...... 谁能阻止我去克雷克雷? 8-|

【问题讨论】:

  • 如果您需要这样做,也许您应该质疑您的 CSS 类/HTML 元素结构是否应该更简单且更易于导航?
  • 我认为这应该很容易......没有类小节的“最近”幻灯片。适应嵌套结构并不难,但是使用这种结构添加小节可以使 CSS 无需额外更改即可工作。
  • ...最后超级简单,感谢@Hiral 指出了答案。

标签: jquery css dom


【解决方案1】:

试试这个:

var a = $("#p32").prevAll(".slide").not(".subsection").first();
alert($(a).text());

Fiddle here.

【讨论】:

  • 就是这样!! prevAll 以相反的顺序遍历,当它收集多个元素时, first() 抓住了它以相反顺序遇到的第一个元素。非常感谢。
  • 终于找到了
  • @karthickeyan 很高兴知道 :)
【解决方案2】:

你可以试试这个

$('.subsection').prev('.slide:not(".subsection")');

An Example here.

【讨论】:

  • 这在我的测试中失败了,因为 .prev 只选择第一个前一个元素,我不能假设 $('.subsection') 将获得所需的元素,因为可能有很多小节元素在实际示例中(在 p2 和 p4 等下),因此它可能不一定获得正确的小节元素...请注意上面的 $subsection = $('#p32') - 不确定我的示例中是否清楚。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-07
  • 2021-08-08
  • 1970-01-01
  • 2016-02-07
  • 1970-01-01
相关资源
最近更新 更多