2012-04-30 13 views
5
$('#foo').slider({ 
    range: 'min', 
    min: 0, 
    max: 1000, 
    step: 100, 
    value: 500, 
    create: function(event, ui) { 
      var bar = ui.value; 
    }, 
    //etc... 
}); 

Tại sao bar không xác định và không 500? Có thể gán biến cho value trong sự kiện create không?không có sẵn trong tạo sự kiện trên thanh trượt jQuery UI?

+1

Đoạn mã trên là chưa đủ để nói tại sao. 'Create' được gọi như thế nào? – Tejs

+0

nơi tạo ra được xác định ... Vui lòng đăng nguồn đầy đủ –

+2

Đây là một cuộc gọi lại tích hợp trong jquery-ui. Nó là tài liệu. Tôi không nghĩ anh ta phải đăng nguồn. –

Trả lời

9

Bạn cũng có thể sử dụng

create: function(e, ui) { 
    var bar=$(this).slider('value'); 
} 

DEMO.

+1

Cảm ơn. Tôi vẫn còn bối rối về lý do tại sao 'ui.value' không hoạt động, nhưng điều này làm việc cho tôi. – jaacob

+0

Bạn được chào đón nhiều nhất :-) được mô tả ở đây http://jqueryui.com/demos/slider/ trong phần 'phương thức'. –

+0

Đối với một số lý do tạo callback không được gọi trong trường hợp của tôi, vì vậy tôi đã phải ràng buộc maunaly sự kiện trước khi tạo thanh trượt $ ('. Slider'). On ('create', function (event, ui) {...}); và sau đó kích hoạt sự kiện tạo thủ công quá sau khi tạo thanh trượt như, $ ('. slider'). slider(). trigger ('create'); – blushrt

1

Tôi không thực sự chắc chắn lý do tại sao bạn cần để có được giá trị khi bạn đang instantiating thanh trượt vì bạn đang đặt nó dù sao, nhưng bạn có thể làm theo cách này:

$('#foo').slider({ 
    range: 'min', 
    min: 0, 
    max: 1000, 
    step: 100, 
    value: 500, 
    create: function(event, ui) { 
      var bar = $('#foo').slider("value"); 
    }, 
    //etc... 
});​ 

jsFiddle example.

+0

Bạn có thể cần giá trị đó nếu ví dụ bạn đang sử dụng một tooltip vĩnh viễn trên tay cầm để hiển thị giá trị hiện tại. Lý tưởng nhất là bạn sẽ chỉ đặt giá trị cho thanh trượt và tạo nhanh chú giải công cụ khi thanh trượt được tạo (tức là sử dụng gọi lại "tạo"). –