2009-05-20 25 views
14

Tôi có một thanh trượt được xác định như sau:Làm cách nào để đặt giá trị Thanh trượt giao diện người dùng jQuery lập trình và kích hoạt sự kiện?

$("#slider").slider({ 
     orientation: "vertical", 
     range: "min", 
     min: 0, 
     max: totalRows, 
     value: totalRows, 
     slide: function(e, ui) { 
      scrollTheTable(ui.value, totalRows, visibleRows, $table); 
     } 
     }); 

Khi sử dụng thanh trượt, chức năng giao cho trượt được gọi không có vấn đề. Tôi có một bảng có thể hoặc không thể chứa một hàng có một lớp SelectedItem. Tôi đang làm việc trên một phương pháp mà sẽ "di chuyển" hàng đó lên đầu bảng về tải trang về cơ bản.

Thịt của phương pháp này trông như thế này:

$("#slider").slider('value', $rows.length - index); 

tài sản này đặt giá trị thanh trượt và thanh trượt làm cho đúng, nhưng xử lý trượt của tôi là không bao giờ được gọi là để làm việc trên bàn.

Tôi thiếu gì ở đây?

Trả lời

22

Có vẻ như tham số trang chiếu chỉ hợp lệ cho sự kiện chuột. Khi đặt giá trị theo chương trình, sự kiện thay đổi sẽ được kích hoạt. Vì vậy, thay đổi thiết lập của tôi để điều này đã cho tôi những gì tôi muốn.

$("#slider").slider({ 
     orientation: "vertical", 
     range: "min", 
     min: 0, 
     max: totalRows, 
     value: totalRows, 
     slide: function(e, ui) { 
      scrollTheTable(ui.value, totalRows, visibleRows, $table); 
     }, 
     change: function(e, ui) { 
      scrollTheTable(ui.value, totalRows, visibleRows, $table); 
     } 
     }); 
+0

Tuyệt vời! Tôi đã có vấn đề này quá và điều này đã giúp. –

+1

Điều đó không gọi cuộnTút hai lần khi thanh trượt được thay đổi bằng chuột? Chỉ sử dụng trình xử lý sự kiện thay đổi hoạt động cho tôi. – xr280xr

0

Tại sao bạn không gọi điều này sau khi bạn đặt giá trị?

scrollTheTable($rows.length - index, totalRows, visibleRows, $table); 
6

Để khởi tạo thanh trượt, phương pháp trên với "slide: function (..." và "thay đổi: function (" hoạt động hoàn hảo Tuy nhiên, để thay đổi thanh trượt sau đó từ bên ngoài ví dụ bằng cách nhấp chuột vào một hình ảnh thu nhỏ hoặc bất kỳ. div khác với một "sự kiện on-click-" bạn có thể sử dụng:

$("#slider").slider('value', newvalue); 

các gợi ý quan trọng đối với tôi là dòng mã hơi không chính xác ($ hàng, PHP?):

$("#slider").slider('value', $rows.length - index); 
0

như đã nêu trong api của jquery: using s lider ('value', X) sẽ gọi được xây dựng trong hàm thay đổi. do đó, một đề xuất là không sử dụng gọi lại trang trình bày.

0

Tôi đang sử dụng thanh trượt có 2 tay cầm. Tôi đã có thể lập trình cập nhật nó bằng mã này:

$("#slider-range").slider('values',[57,180]).change(); 
Các vấn đề liên quan