質問

ASP:Net MVCアプリケーションのページに、実行時にアクティブなアコーディオンを設定するjQueryアコーディオンがあります。

私のコードは次のとおりです。

<script type="text/javascript">
    $(document).ready(function() {
        var accordionindex = $("#UIPViewModel_ActiveAccordion").val();
        alert("Setting active index to " + accordionindex);
        $("#accordion").accordion('activate', accordionindex );
    });
</script>

アクティブなアコーディオンを設定する最後の行が表示されます。 このコードを使用する場合、常にアクティブを使用したように動作します:falseおよびすべてのアコーディオンが閉じています。ただし、アラートに正しいランタイム値が表示されます。

また、同じものを単純に使用してみました:

$(&quot;#accordion&quot;)。accordion( 'activate'、$(&quot;#UIPViewModel_ActiveAccordion&quot;)。val());

最後の行を次のように変更したとき:

$(&quot;#accordion&quot;)。accordion( 'activate'、2); (つまり、ハードコーディングされています)。常に正しく動作します!

誰が間違っているかを見ることができますか? どこで間違いを犯していますか?

役に立ちましたか?

解決

val()によって返される変数は文字列であり、アコーディオンは数値を予期しています。試してください:

    var accordionindex = $("#UIPViewModel_ActiveAccordion").val();
    accordionindex = parseInt(accordionindex, 10);  // convert a string to a number
    alert("Setting active index to " + accordionindex);
    $("#accordion").accordion('activate', accordionindex );

他のヒント

ケンのソリューションを拡張するだけ:

<script type="text/javascript"> 
$(function () {
    var accordionindex = Number($("#UIPViewModel_ActiveAccordion").val());
    alert("Setting active index to " + accordionindex);
    $("#accordion").accordion('activate', accordionindex );
});
</script>

val()が通常の数字以外になる可能性がある場合(値に「インデックス4」があった場合など)にのみ、parseIntを使用する必要があります。そして、変数を設定するときに数字としてキャストできます。

新しいバージョンでは、パネルをアクティブ化(および非アクティブ化)する方法が変更されました:

jQuery(".selector").accordion("option", {active: index});

私に夢中ではないことを理解するためにしばらく見てください-jQueryUI 1.8はactivateメソッドをサポートします。 1.9以上では削除されました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top