我有四个段落元素。我想在点击奇数元素之后切换下一个偶数元素。
这是安排。
<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)被切换?我不太确定如何通过论证或者最好的方法。
谢谢
答案 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');
});
答案 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');
});