0

4 つの段落要素があります。奇数要素をクリックした後、次の偶数要素を切り替えたい。

これがアレンジです。

<p>First</p>

<p>Second</p>

<p>Third</p>

<p>Fourth</p>

したがって、[First] をクリックすると、[Second] がトグルされます。3 番目をクリックすると、4 番目の要素が切り替えられます。それが理にかなっていることを願っています。

これが私がこれまでに思いついたことです。

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

さて、このコードはすべての偶数要素を切り替えます。奇妙な段落をクリックするたびに、n + 1を切り替えたいだけです。それは理にかなっていますか?その関数が引数を取り、奇数の段落をクリックした後に次の (n+1) が切り替えられるようにする方法はありますか? 引数を渡す方法や、それを行うための最良の方法は本当にわかりません。

ありがとうございました

4

3 に答える 3

0

試してみ.next()ませんか? http://api.jquery.com/next/

$("p:odd").click(function(){
    $(this).next().toggle('slow'); 
        });
于 2013-03-01T03:29:00.290 に答える
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/

于 2013-03-01T03:29:17.497 に答える
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');
});
于 2013-03-01T03:30:53.880 に答える