jquery nth-child作为函数中的参数。

时间:2013-03-01 03:25:35

标签: javascript jquery css-selectors

我有四个段落元素。我想在点击奇数元素之后切换下一个偶数元素。

这是安排。

<p>First</p>

<p>Second</p>

<p>Third</p>

<p>Fourth</p>

所以,如果我点击First,我希望第二个被切换;如果我点击第三个,我想要切换第四个元素。我希望这是有道理的。

到目前为止,这是我能够提出的。

$("p:odd").click(function(){
    $("p:even").toggle("slow");
        });

现在,这段代码切换了所有偶数元素。每当我点击一个奇数段时,我只想切换n + 1。是否有意义?有没有办法让该函数接受一个参数,以便在单击一个奇数段后,下一个(n + 1)被切换?我不太确定如何通过论证或者最好的方法。

谢谢

3 个答案:

答案 0 :(得分:0)

你尝试.next()怎么样? http://api.jquery.com/next/

$("p:odd").click(function(){
    $(this).next().toggle('slow'); 
        });

答案 1 :(得分:0)

您可以缓存对象并使用eq方法:

var $p    = $('p'), 
    $odd  = $p.filter(':odd'), 
    $even = $p.filter(':even');

$odd.click(function(){
    $even.eq( $odd.index(this) ).toggle('slow');
});

http://jsfiddle.net/TLucC/ | http://jsfiddle.net/uNu9y/

答案 2 :(得分:0)

在所有Javascript和jQuery方法中,触发事件的项目将自动作为this传递给函数。但是,由于Javascript中没有包含变量作用域的方式,this可以根据内部调用的其他函数进行更改。最佳做法是立即将this设置为另一个变量。

所以,你可以像这样调整你的方法:

$("p:odd").click(function(){
    var self = this;

    // I'm doing .next('p') to make your code safer in case there's something between the <p> elements.
    $(self).next('p').toggle('slow');
});