使用Bootstrap Tooltip在悬停时向jQuery UI Slider添加工具提示的问题

时间:2014-03-13 23:26:19

标签: javascript jquery jquery-ui twitter-bootstrap-3 jquery-ui-slider

请你看看at this Demo,让我知道为什么我无法在悬停时将工具提示添加到处理程序中?

$("#slider-range").slider({
    range: true,
    step: 5,
    min: 100,
    max: 500,
    values: [150, 300],
    slide: function (event, ui) {
        $("#amount").val("$" + ui.values[0] + " - $" + ui.values[1]);
    }
});

$("#amount").val("$" + $("#slider-range").slider("values", 0) + " - $" + $("#slider-range").slider("values", 1));

$('.ui-slider-handle').hover(

function () {
    $('.ui-slider-handle:first').html('<div class="tooltip top slider-tip"><div class="tooltip-arrow"></div><div class="tooltip-inner">' + ui.values[0] + '</div></div>');
    $('.ui-slider-handle:last').html('<div class="tooltip top slider-tip"><div class="tooltip-arrow"></div><div class="tooltip-inner">' + ui.values[1] + '</div></div>');
}, function () {

});

html()方法在slide:内使用时工作正常,但我只需要在悬停时显示它们。

slide: function (event, ui) {
   $("#amount").val("$" + ui.values[0] + " - $" + ui.values[1]);
   $('.ui-slider-handle:first').html('<div class="tooltip top slider-tip"><div class="tooltip-arrow"></div><div class="tooltip-inner">' + ui.values[0] + '</div></div>');
   $('.ui-slider-handle:last').html('<div class="tooltip top slider-tip"><div class="tooltip-arrow"></div><div class="tooltip-inner">' + ui.values[1] + '</div></div>');
 }

由于

1 个答案:

答案 0 :(得分:9)

我检查了你的代码。这有很多问题。首先,你在悬停功能中没有ui对象。所以,你无法访问它。仅当mouser进入并且发生mouser leave时,悬停事件才会触发。因此,您将悬停功能置于幻灯片功能中,以在拖动手柄时显示更改的值。我还添加了一些其他修改。

修改后的Javascript:

$("#slider-range").slider({
    range: true,
    step: 5,
    min: 100,
    max: 500,
    values: [150, 300],
    slide: function (event, ui) {
        $("#amount").val("$" + ui.values[0] + " - $" + ui.values[1]);
            $('.ui-slider-handle:first').html('<div class="tooltip top slider-tip"><div class="tooltip-arrow"></div><div class="tooltip-inner">' + ui.values[0] + '</div></div>');
            $('.ui-slider-handle:last').html('<div class="tooltip top slider-tip"><div class="tooltip-arrow"></div><div class="tooltip-inner">' + ui.values[1] + '</div></div>');
    }
});

$("#amount").val("$" + $("#slider-range").slider("values", 0) + " - $" + $("#slider-range").slider("values", 1));

$( ".ui-slider-handle" ).mouseleave(function() {
$('.ui-slider-handle').html("");
}) 
$( ".ui-slider-handle" ).mouseenter(function() {
var value = $( "#slider-range" ).slider( "option", "values" );
$('.ui-slider-handle:first').html('<div class="tooltip top slider-tip"><div class="tooltip-arrow"></div><div class="tooltip-inner">' + value[0] + '</div></div>');
$('.ui-slider-handle:last').html('<div class="tooltip top slider-tip"><div class="tooltip-arrow"></div><div class="tooltip-inner">' + value[1] + '</div></div>');
}) 

working fiddle