2009-09-10 44 views
5

Tôi có một accordion jQuery trong một trang trong ASP: Ứng dụng Net MVC mà tôi muốn đặt accordion hoạt động khi chạy.Cài đặt jQuery Accordion hoạt động

Mã của tôi là như sau:

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

Bạn sẽ thấy dòng cuối cùng đặt accordion hoạt động. Khi tôi sử dụng mã này nó luôn hoạt động giống như tôi đã sử dụng hoạt động: false và TẤT CẢ các accordions được đóng mặc dù cảnh báo hiển thị giá trị thời gian chạy chính xác.

Tôi cũng đã cố gắng chỉ đơn giản bằng cách sử dụng sau đó là như nhau:. (. 'Kích hoạt', $ ("# UIPViewModel_ActiveAccordion") val())

$ ("# accordion") accordion;

Khi tôi thay đổi dòng cuối cùng thành:

$ ("# accordion"). Accordion ('activate', 2); (tức là mã hóa cứng). Nó luôn hoạt động chính xác!

Có ai có thể thấy điều gì sai? Tôi đang mắc lỗi ở đâu?

Trả lời

9

Biến được trả về bởi val() là một chuỗi và accordion đang mong đợi một số. Hãy thử:

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); 
+0

Đây là vấn đề. Ngoài ra, như tôi đang GET cùng một trang một lần nữa, và sử dụng kích hoạt gây ra một ít hơn so với slide thỏa đáng để accordion được chọn. Tôi có một gợi ý từ một bài đăng khác ở đây về 'phá hủy' và sau đó tạo lại accordion với accordion hoạt động được chọn và trang làm mới mà không có bất kỳ hiệu ứng giao diện người dùng accordion theo yêu cầu. Tôi đã sử dụng: $ ("# accordion"). Accordion ('destroy'); $ ("# accordion") accordion ({active: parseInt (accordionindex)}); – Redeemed1

+1

Tôi đã cố gắng tìm một giải pháp cho điều này cho GIỜ! Một cái gì đó đơn giản như chuỗi so với số nguyên. Wow. – Paul

+0

cảm ơn bạn đã đăng –

6

Chỉ cần để mở rộng Ken của giải pháp:

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

Bạn thực sự chỉ cần sử dụng parseInt nếu có một số cơ hội mà các val() sẽ không bao giờ có một cái gì đó khác hơn chữ số bình thường (như nếu nó có "chỉ số 4" cho giá trị). Và bạn có thể bỏ nó như một chữ số trong khi bạn đặt var.

+0

thực sự giá trị đang đến tạo thành một trường Ẩn được điền bằng giá trị int. Xuất hiện rằng giá trị trường ẩn phải được trả về dưới dạng giá trị chuỗi – Redeemed1

+2

luôn là chuỗi khi chúng xuất hiện trong DOM. Thậm chí nếu bạn cast chúng như là số nguyên hoặc float và sau đó tiêm chúng vào DOM từ js. Tôi đã học một bài học đắt giá. – Anthony

2

cho các phiên bản mới hơn, cách để kích hoạt (hoặc tắt) bảng điều khiển đã thay đổi:

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

Đã cho tôi một thời gian để tìm ra tôi không phải là điên - jQueryUI 1.8 hỗ trợ các phương pháp kích hoạt. Họ đã loại bỏ nó từ 1.9 trở lên.

Các vấn đề liên quan