سؤال

لدي مسج الأكورديون في صفحة ASP:صافي MVC التطبيق الذي ترغب في تعيين النشطة الأكورديون في وقت التشغيل.

قانون بلدي على النحو التالي:

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

سوف ترى السطر الأخير مجموعات نشطة الأكورديون. عند استخدام هذه التعليمة البرمجية دائما يتصرف كما لو كنت قد استخدمت النشط :كاذبة كل الأكورديون مغلقة على الرغم من تنبيه يعرض الصحيح runtime القيمة.

كما أنني حاولت ببساطة باستخدام التالي الذي هو نفسه:

$("#الأكورديون").الأكورديون('تفعيل', $("#UIPViewModel_ActiveAccordion").val());

عندما أقوم بتغيير السطر الأخير إلى :

$("#الأكورديون").الأكورديون('تفعيل', 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>

كنت حقا بحاجة فقط لاستخدام parseInt إذا كان هناك بعض فرصة أن val() لن يكون شيئا آخر غير العادية أرقام (مثل إذا كان مؤشر "4" عن قيمة).و يمكنك أن يلقي على أنها أرقام حين تعيين فار.

للحصول على إصدارات أحدث طريقة لتفعيل (تعطيل) الفريق قد تغير:

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

استغرق مني بعض الوقت لمعرفة لم أكن مجنون -- jQueryUI 1.8 يدعم تفعيل الأسلوب.تخلصوا من 1.9 وما فوق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top