2013-03-19 41 views
10

Tôi đang cố gắng kích hoạt sự kiện khi người dùng trượt thanh trượt và giá trị được thay đổi khi trượt dừng. Theo tài liệu jQuery, sự kiện change sẽ là lý tưởng cho trường hợp này. Vì vậy, tôi đang cố gắng này ra:Sự kiện 'thay đổi' của thanh trượt giao diện người dùng jQuery kích hoạt ngay cả khi giá trị không thay đổi

<!doctype html> 
    <html lang="en"> 
     <head> 
      <meta charset="utf-8" /> 
      <title>jQuery UI Slider - Default functionality</title> 
      <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css" /> 
      <script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
      <script src="http://code.jquery.com/ui/1.10.2/jquery-ui.js"></script> 
      <link rel="stylesheet" href="/resources/demos/style.css" /> 
      <script> 
       $(function() { 
        $("#slider").slider({ 
         change:function() { alert("foo"); } 
        }); 
       }); 
      </script> 
     </head> 
     <body> 
      <div id="slider"></div> 
     </body> 
    </html> 

Tuy nhiên, tôi nhận thấy rằng khi tôi kéo thanh trượt sang bên phải và một lần nữa kéo nó trở lại điểm khởi đầu (vị trí ban đầu của thanh trượt tại trang tải), các cảnh báo vẫn còn cháy. Đây có phải là lỗi jQuery không? Nếu không, làm thế nào để sửa lỗi này?

+1

Làm việc như dự định. Sự kiện thay đổi kích hoạt bất cứ khi nào thanh trượt thay đổi giá trị, vì vậy khi bạn di chuyển nó lần đầu tiên giá trị của thanh trượt đã thay đổi thành giá trị mới, vì vậy khi bạn di chuyển trở lại, giá trị đã thay đổi một lần nữa. – Populus

+0

Không, ý tôi là: kéo nó sang bên phải, mà không thả nó về vị trí ban đầu (0). Vì vậy, bây giờ sự kiện đã hoàn thành và bạn đang ở giá trị khi bạn bắt đầu kéo. Vì vậy, làm thế nào đến đây là một sự kiện 'thay đổi'? – SexyBeast

+0

Thay đổi() có thể kích hoạt tắt vị trí của bảng điều khiển thanh trượt chứ không phải là ID thanh trượt. – isherwood

Trả lời

16
$(function() { 
    $("#slider").slider(); 

    var startPos = $("#slider").slider("value");, 
     endPos = ''; 

    $("#slider").on("slidestop", function(event, ui) { 
     endPos = ui.value; 

     if (startPos != endPos) { 
      // do stuff 
     } 

     startPos = endPos; 
    }); 
}); 
-1

Chỉ cần thử.

$(function() { 
    $("#slider").slider({ 
     slide: function(event, ui) { 
      // use ui.value to get a number 
      // do your functions 
     } 
    }); 
}); 
+0

Làm cách nào để phát hiện thay đổi về giá trị? – isherwood

+1

Vâng, thực sự thế nào? Tôi không muốn kích hoạt một chức năng trong khi trượt, tôi muốn điều này: để kích hoạt sự kiện khi người dùng đã ngừng trượt và giá trị hiện tại khác với giá trị hiện tại khi anh ấy bắt đầu .. – SexyBeast

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