jQuery 选择此后具有特定类的第一个元素

标签 jquery jquery-selectors

这是我的 fiddle : http://jsfiddle.net/jamesbrighton/wxWgG/4/

HTML:

<div>
    <p class="click">Click 1</p>
    <p>This should be ignored</p>
    <p>This should be ignored</p>
    <p>This should be ignored</p>
</div>

<div>
    <p class="target">Target 1</p>
</div>
<div>
    <p class="target">Target 2</p>
</div>


<div>
    <p class="click">Click 2</p>
    <p>This should be ignored</p>
    <p>This should be ignored</p>
    <p>This should be ignored</p>
</div>

<div>
    <p class="target">Target 3</p>
</div>
<div>
    <p class="target">Target 4</p>
</div>

jQuery:

$('.click').click(function() {
   $(this).nextAll('.target').css('color','red');
});​

我需要它,这样当您单击 p.click 时,下一个 p.target 就会变成红色。

因此,如果您单击'Click 1',则'Target 1' 会变成红色。如果您单击'Click 2',则'Target 3' 将变为红色。

以及.find,我已经尝试过.closest,从jQuery文档来看,在我看来它应该可以工作。正如您从 HTML 中看到的,.target 不是 .click 的子级,以防产生影响。

最佳答案

这是另一种方法,尽管我不知道在这种情况下 .index() 的性能如何。这还假设永远不存在两个连续的 .click 元素(或者换句话说:两个 .click 之间始终至少有一个 .target 元素> 元素):

var $elements = $('.click, .target');

$('.click').click(function() {
   $elements.eq($elements.index(this) + 1).css('color','red');
});​

DEMO

这是有效的,因为元素是按照它们在文档中出现的顺序选择的。

关于jQuery 选择此后具有特定类的第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9826089/

相关文章:

jquery - Twitter Bootstrap 和选择的 jQuery 插件不起作用

javascript - jQuery/JavaScript - 计算多个父元素中的子元素

asp.net-mvc-2 - 使用jquery从动态html表中删除一行

jQuery UI 选项卡。如何根据 id 而不是基于索引来选择选项卡

javascript - 解析具有内联事件处理程序的 HTML

java - JSON 格式说明换行符

javascript - 为什么 Div 元素在手动复制粘贴时看起来很好,但在附加 jquery append 时看起来很糟糕?

javascript - 绑定(bind)多个参数的回调函数

jquery - 我们如何在 JQuery 的单个选择器中使用多个 Id/内容

Jquery选择器问题