2013-03-19 6 views
10

Ich versuche, ein Ereignis auszulösen, wenn ein Benutzer den Schieberegler verschiebt und der Wert geändert wird, wenn die Verschiebung stoppt. Laut den jQuery-Dokumenten wäre das Ereignis change ideal für diesen Fall. Also ich versuche, dies aus:jQuery UI Schieberegler 'ändern' Ereignis wird ausgelöst, auch wenn Wert nicht geändert wurde

<!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> 

Allerdings beobachte ich, dass, wenn ich ziehen Sie die Regler nach rechts und wieder ziehen Sie es zurück zum Ausgangspunkt (die Ausgangsposition des Schiebers auf Seite-Last), das Alarm brennt immer noch. Ist das ein jQuery-Fehler? Wenn nein, wie repariere ich das?

+1

Arbeiten wie vorgesehen. Das Ereignis wird ausgelöst, wenn der Schieberegler den Wert ändert. Wenn Sie ihn zum ersten Mal verschoben haben, hat sich der Wert des Schiebereglers auf einen neuen Wert geändert. Wenn Sie ihn also zurückbewegten, hat sich der Wert erneut geändert. – Populus

+0

Nein, was ich meine ist das: ziehe es nach rechts, ohne es loszulassen, bringe es zurück zur Anfangsposition (0). Jetzt ist das Ereignis abgeschlossen und Sie befinden sich auf dem Wert, an dem Sie sich befanden, als der Ziehvorgang eingeleitet wurde. Wie kommt es, dass dies ein Change-Event ist? – SexyBeast

+0

Change() löst wahrscheinlich die Schiebereglerposition aus, nicht die Schieberegler-ID. – isherwood

Antwort

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

Versuchen Sie es einfach.

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

Wie erkennt dies eine Wertänderung? – isherwood

+1

Ja, wie? Ich möchte keine Funktion auslösen, während ich rutsche. Ich möchte Folgendes: das Ereignis auslösen, wenn der Benutzer nicht mehr rutscht und der aktuelle Wert sich von dem Wert unterscheidet, zu dem er gestartet wurde. – SexyBeast

Verwandte Themen