web-dev-qa-db-fra.com

Comment changer la poignée du curseur Jquery UI

Je souhaite modifier le curseur de l'interface utilisateur JQuery d'origine afin que la poignée comporte une flèche plutôt qu'un carré. c’est-à-dire que je veux utiliser une image personnalisée comme descripteur.

Il y a quelques tutoriels qui le font:

Mais je ne peux pas le faire fonctionner. Le code suivant donne une image de poignée fixe:

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

C'est comme si JQuery ne détectait pas que je voulais utiliser l'id myhandle pour le handle. Je me demande: ai-je besoin d'un plugin pour que JQuery reconnaisse l'option handle? (Cela n’est pas documenté dans http://docs.jquery.com/UI/Slider ). Ou peut-être que cela ne fonctionnait que dans une ancienne version de JQuery?

Des idées?

43
Tom

La classe CSS pouvant être modifiée pour ajouter une image au handle du curseur JQuery est appelée " .ui-slider-horizontal .ui-slider-handle ".

Le code suivant montre une démo:

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

Je pense que l'enregistrement d'une option handle était l'ancienne méthode et qu'il n'était plus pris en charge dans JQuery-ui 1.7.2?

48
Tom
.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; 
}
18
Andrew Betts

Si vous devez remplacer la poignée par quelque chose d’autre, plutôt que de la changer:

Vous pouvez spécifier des éléments de descripteur personnalisés en créant et en ajoutant des éléments, puis en ajoutant la classe ui-slider-handle avant l'initialisation.

Exemple de travail

$('.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>

14
apaul

Vous devez également définir border:none à cette classe css.

3
Xhanch Studio

Cette modification concerne uniquement la première poignée du curseur multibranches. Dans apiDoc, vous pouvez voir: "Par exemple, si vous spécifiez des valeurs: [1, 5, 18] et créez un descripteur personnalisé, le plug-in créera les deux autres."

0
anatoli