J'ai utilisé le composant de curseur de l'interface utilisateur jQuery dans ma page pour définir une fourchette des prix. Je peux également utiliser leurs ui.values [] pour définir et afficher les nouvelles valeurs dans d'autres divs.
Comment puis-je faire pour voir la nouvelle valeur sous le handle . C'est à dire. si j'ai déplacé la poignée à 100 $, je veux définir le texte «100 $» juste sous cette poignée.
BTW, j'utilise la version de gamme - pour définir une gamme de prix, donc j'ai deux poignées sur mon curseur (min et max).
var minPriceRange=100;
var maxPriceRange=500;
$( "#priceRangeSlider" ).slider({
range: true,
min: minPriceRange,
max: maxPriceRange,
step: 10,
values: [ minPriceRange, maxPriceRange ],
slide: function( event, ui ) {
("#fromRangeText").text("$" + ui.values[ 0 ]);
$("#toRangeText").text("$" + ui.values[ 1 ]);
}
});
Vous pouvez utiliser la fonction utilitaire .position
à partir de l'interface utilisateur jQuery pour positionner les étiquettes:
$("#slider").slider({
...
slide: function(event, ui) {
var delay = function() {
var handleIndex = $(ui.handle).data('index.uiSliderHandle');
var label = handleIndex == 0 ? '#min' : '#max';
$(label).html('$' + ui.value).position({
my: 'center top',
at: 'center bottom',
of: ui.handle,
offset: "0, 10"
});
};
// wait for the ui.handle to set its position
setTimeout(delay, 5);
}
});
Voir l'action: http://jsfiddle.net/william/RSkpH/1/ .
Je voudrais simplement mettre les étiquettes à l'intérieur des poignées, au lieu de les repositionner tout le temps, comme dans cette réponse: https://stackoverflow.com/a/7431057/1250436
$("#slider").slider({
range: true,
min: 100,
max: 500,
step: 10,
values: [100, 500],
animate: 'slow',
create: function() {
$('#min').appendTo($('#slider a').get(0));
$('#max').appendTo($('#slider a').get(1));
},
slide: function(event, ui) { $(ui.handle).find('span').html('$' + ui.value); }
});
Cela ne fonctionne pas dans Chromium pour Linux. Une étrange erreur gfx se produit.
Voir la démo de travail: http://jsfiddle.net/ohcibi/RvSgj/2/
Il est possible de créer un curseur Nice en incluant des info-bulles d'amorçage. Voici une version mise à jour du curseur à l'aide des info-bulles d'amorçage. http://jsfiddle.net/ykay/jL044k1c/
function slide(event, ui) {
setTimeout(function () {
$(ui.handle).attr('title', ui.value).tooltip('fixTitle').tooltip('show');
}, 0);
}
function create(event, ui, start, end) {
var handles = $(event.target).find('span');
handles.eq(0).tooltip({animation: false, placement: 'top', trigger: 'manual', container: handles.eq(0), title: start}).tooltip('show');
handles.eq(1).tooltip({animation: false, placement: 'top', trigger: 'manual', container: handles.eq(1), title: end}).tooltip('show');
}
$('#slider').slider({
range: true,
min: 0,
max: 100,
values: [20, 80],
slide: function (event, ui) {
slide(event, ui)
},
create: function (event, ui) {
create(event, ui, $(this).slider('values', 0), $(this).slider('values', 1))
}
});
Je poursuivais le même objectif et j'ai décidé d'y aller avec les infobulles de Bootstrap. Vous pouvez essayer le code sur ce JSFiddle .
$('#slider').slider({
range: true,
min: -60,
max: 60,
values: [ init_start_at, init_end_at ],
slide: function(event, ui) {
// Allow time for exact positioning
setTimeout( function(){
$(ui.handle).attr('title', ui.value + '°C').tooltip('fixTitle').tooltip('show');
}, 5);
},
create: function( event, ui ) {
var target = $(event.target);
var handles = $(event.target).find('a');
var container, wait;
// Wait for the slider to be in position
(wait = function() {
if ((container = target.parents('.content')).length != 0) {
handles.eq(0).tooltip({animation: false, placement: 'top',trigger: 'manual', container: container, title: init_start_at + ' °C'}).tooltip('show');
handles.eq(1).tooltip({animation: false, placement: 'bottom',trigger: 'manual', container: container, title: init_end_at + ' °C'}).tooltip('show');
} else {
setTimeout( wait, 50 );
}
})();
}
});
J'espère que ça aide quelqu'un.
change => Cet événement est déclenché à l’arrêt du curseur ou si la valeur est modifiée par programme (à l’aide de la méthode value). Prend les arguments event et ui. Utilisez event.originalEvent pour détecter si la valeur a été modifiée à l'aide de la souris, du clavier ou par programme. Utilisez ui.value (curseurs à une seule poignée) pour obtenir la valeur du descripteur actuel, $ (this) .slider ('values', index) pour obtenir la valeur d'un autre descripteur.
vous pouvez le trouver si facilement dans la documentation officielle de la page du curseur jQyeryUI dans l'exemple suivant