2

私がこれを正しい方法で行っているかどうかはわかりませんが、私ができる限り最善を尽くそうとしていることを説明しようと思います。

メニューを含むHTMLページがあります。そのメニュー内には、特定のCSSクラスが使用されているインスタンスがいくつかあります。ページが変更されると、値がURLを介して渡され、選択されたアイテムを強調表示してサブメニューを展開するために使用されます。

私が抱えている問題は、この値を使用して適切なポイントでリストを展開しようとすると、実際に新しいCSSクラスを選択して追加したり、他の操作を実行したりできないことです。以下にいくつかのコードを投稿して、私が話していることをよりよく理解してから、シナリオの例を示してください。

if (param != null) {
    $('.menuButton')[paramvalue].addClass('on');
    $('.menuButton')[paramvalue].slideDown('normal');
}

それは問題を与えているjavascriptの部分です。上記の場合、paramvalueは0または1などに置き換えることができます。この部分は、変更したい特定のクラスに到達しています。HTMLにIDを追加し、次を使用して取得することで、これを確認しました。

 alert($('.menuButton')[paramvalue].id);

これにより、正しいID値が返されました。

HTMLは次のとおりです。

<div class="menuButton" id="2">Button 1</div>
<div class="subMenu">
    <ul>
    <li><a href="#">Item 1.1</a></li>
    <li><a href="#">Item 1.2</a></li>
    <li><a href="#">Item 1.3</a></li>
 </ul>
</div>
<div class="menuButton" id="3">Button 2</div>
<div class="subMenu">
<ul>
    <li><a href="#">Item 2.1</a></li>
    <li><a href="#">Item 2.2</a></li>
    </ul>
</div>

主にテスト用に追加されたIDに対応するCSSはありません。必要に応じて関連するCSSを投稿できますが、問題の一部ではないと思います。

私は、次の作品を使用して、言及する必要があります

$('.menuButton').addClass('on');

だから多分それは問題を絞り込みます。

他の情報が必要な場合。聞いてください。

助けてくれてありがとう。

4

3 に答える 3

7

$(selector)[index]jQuery オブジェクトをメソッドのない DOM Element オブジェクトに変換するために使用することで、代わりにメソッドaddClassを使用できます。eq()

$('.menuButton').eq(paramvalue).addClass('on');
$('.menuButton').eq(paramvalue).slideDown('normal');

メソッドをチェーンすることもできます。

$('.menuButton').eq(paramvalue).addClass('on').slideDown('normal');
于 2012-09-20T22:57:30.813 に答える
2

次のこともできます。

$('.menuButton:eq('+paramvalue+')').addClass('on');

これにより、すべての要素を選択してから選択した要素を 1 つだけに削減するよりもパフォーマンスが向上します。

于 2012-09-20T23:00:29.900 に答える
2

試してみてください:

$('.menuButton').eq(paramvalue).addClass('on');
于 2012-09-20T22:58:16.163 に答える