So ändern Sie den Schieberegler der Jquery-Benutzeroberfläche

Lesezeit: 5 Minuten

Ich möchte den Standard-JQuery-UI-Schieberegler so ändern, dass der Griff einen Pfeil hat und kein Quadrat ist. dh ich möchte ein benutzerdefiniertes Bild als Handle verwenden.

Es gibt ein paar Tutorials, die es tun:

Aber ich bekomme es nicht zum Laufen. Der folgende Code führt zu einem stationären Handle-Bild:

<!DOCTYPE html>
<html>
<head>
  <link type="text/css" href="http://jqueryui.com/latest/themes/base/ui.all.css" rel="stylesheet" />
  <script type="text/javascript" src="http://jqueryui.com/latest/jquery-1.3.2.js"></script>
  <script type="text/javascript" src="http://jqueryui.com/latest/ui/ui.core.js"></script>
  <script type="text/javascript" src="http://jqueryui.com/latest/ui/ui.slider.js"></script>
  <style type="text/css">
  #myhandle {position: absolute;z-index: 100;height: 25px;width: 35px;top: auto;background: url(http://stackoverflow.com/content/img/so/vote-arrow-down.png) no-repeat;}   
  </style>
  <script type="text/javascript">
  $(document).ready(function(){
    $("#slider").slider({handle: '#myhandle'});
  });
  </script>
</head>
<body>
<div id="slider"><div id="myhandle"></div></div>
</body>
</html>

Es ist, als würde JQuery nicht erkennen, dass ich die verwenden möchte meinhandle ID für den Griff. Ich frage mich: Brauche ich ein Plugin für JQuery, um das zu erkennen? handhaben Möglichkeit? (nicht dokumentiert in http://docs.jquery.com/UI/Slider). Oder funktionierte es vielleicht nur in einer alten Version von JQuery?

Irgendwelche Ideen?

  • Dies wurde bereits beantwortet: stackoverflow.com/questions/1170596/…

    – karim79

    30. Juli 2009 um 15:24 Uhr

  • Alle drei Tutorial-Links in der Frage sind jetzt tot. 🙁

    – Leichtigkeitsrennen im Orbit

    23. Juli 2015 um 13:51 Uhr

Die CSS-Klasse, die geändert werden kann, um dem JQuery-Schieberegler-Handle ein Bild hinzuzufügen, heißt “.ui-slider-horizontal .ui-slider-handle“.

Der folgende Code zeigt eine Demo:

<!DOCTYPE html>
<html>
<head>
  <link type="text/css" href="http://jqueryui.com/latest/themes/base/ui.all.css" rel="stylesheet" />
  <script type="text/javascript" src="http://jqueryui.com/latest/jquery-1.3.2.js"></script>
  <script type="text/javascript" src="http://jqueryui.com/latest/ui/ui.core.js"></script>
  <script type="text/javascript" src="http://jqueryui.com/latest/ui/ui.slider.js"></script>
  <style type="text/css">
  .ui-slider-horizontal .ui-state-default {background: white url(http://stackoverflow.com/content/img/so/vote-arrow-down.png) no-repeat scroll 50% 50%;}
  </style>
  <script type="text/javascript">
  $(document).ready(function(){
    $("#slider").slider();
  });
  </script>
</head>
<body>
<div id="slider"></div>
</body>
</html>

Ich denke, die Registrierung a handhaben Option war die alte Methode und wurde in JQuery-ui 1.7.2 nicht mehr unterstützt?

  • wow .. ich stand auch vor dem gleichen Problem und das wurde von Ihrer Lösung gelöst .. danke Kumpel

    – Dr. Rajesh Rolen

    27. April 2010 um 5:12 Uhr

  • Ich habe genau diesen Code in DW kopiert und eingefügt und ausprobiert. Ich habe das Bild durch mein eigenes ersetzt. Weder der Slider noch die Bildanzeige. Ich habe jede Lösung ausprobiert, die zu diesem Thema aufgeführt ist, und nichts hat funktioniert, um die Bilder zu ändern. Ich werde meinen Code in meinem eigenen Thread posten und wenn es eine funktionierende Lösung für SO gibt, kann hoffentlich jemand die URL für SO auflisten.

    – Chris22

    25. Mai 2012 um 15:58 Uhr


  • Der Link zum PNG ist defekt.

    – Mathias Braun

    3. Juni 2013 um 23:58 Uhr

.ui-slider .ui-slider-handle{
    width:50px; 
    height:50px; 
    background:url(../images/slider_grabber.png) no-repeat; overflow: hidden; 
    position:absolute;
    top: -10px;
    border-style:none; 
}

Benutzer-Avatar
apaul

Wenn Sie den Griff durch etwas ganz anderes ersetzen müssen, anstatt ihn nur neu zu gestalten:

Sie können benutzerdefinierte Handle-Elemente angeben, indem Sie die Elemente erstellen und anhängen und die ui-slider-handle-Klasse vor der Initialisierung hinzufügen.

Arbeitsbeispiel

$('.slider').append('<div class="my-handle ui-slider-handle"><svg height="18" width="14"><path d="M13,9 5,1 A 10,10 0, 0, 0, 5,17z"/></svg></div>');

$('.slider').slider({
  range: "min",
  value: 10
});
.slider .ui-state-default {
  background: none;
}
.slider.ui-slider .ui-slider-handle {
  width: 14px;
  height: 18px;
  margin-left: -5px;
  top: -4px;
  border: none;
  background: none;
}
.slider {
  height: 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.9.1/jquery-ui.min.js"></script>
<link href="https://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" rel="stylesheet" />
<div class="slider"></div>

  • Dies sollte die akzeptierte Antwort für Gründlichkeit und das Arbeitsbeispiel sein. Warum ein bereits vorhandenes Element stylen, bei dem Sie einfach Ihr eigenes einfügen können?

    – Alexander Dixon

    8. September 2016 um 20:22 Uhr


Benutzer-Avatar
Xhanch-Studio

Sie sollten auch einstellen border:none zu dieser CSS-Klasse.

Dies ändert nur den ersten Griff im Multihandle-Schieberegler. In apiDoc sehen Sie: „Zum Beispiel, wenn Sie Werte angeben: [ 1, 5, 18 ] und ein benutzerdefiniertes Handle erstellen, erstellt das Plugin die anderen beiden.”

  • Bitte fügen Sie einige Kommentare zu Ihrer Lösung hinzu, warum und wie sie das Problem löst

    – Bhavesh Odedra

    9. Februar 2016 um 18:08 Uhr

  • Bitte fügen Sie einige Kommentare zu Ihrer Lösung hinzu, warum und wie sie das Problem löst

    – Bhavesh Odedra

    9. Februar 2016 um 18:08 Uhr

1257340cookie-checkSo ändern Sie den Schieberegler der Jquery-Benutzeroberfläche

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy