Convert this custom JQuery tooltip script into a Jquery plugin

前端 未结 2 786
温柔的废话
温柔的废话 2021-01-27 11:44

I -with some stackoverflow users help- have developed this tooltip script using Jquery and general Javascript,

    

        
相关标签:
2条回答
  • 2021-01-27 12:32

    It should look like this:

    (function ($) {
        $.fn.meliaTooltip = function (options) {
            var defaults = {
                tooltip: '.miTooltip',
                tiempo_espera: 0,
                seguir_raton: true,
                ajuste_top: 0,
                ajuste_left: 0,
                fade_time: 300
            };
    
            var opts = $.extend(defaults, options);
    
            $(this).each(function() {
                $(this).hover(function(e) {
                    /*Guardamos el selector del disparador y de tooltip en una variable*/
                    var disp = $(this);
                    var tip = disp.next(opts.tooltip);
                    var tip_text = tip.html();
                    //alert(tip_text);
                    var new_content = '<span class="left"></span ><span class="contenido">' + tip_text + '</span ><span class="right"></span ><span class="bottom"></span >';
                    //alert(new_content);
                    tip.html(new_content);
                    if (typeof t != 'undefined') {
                        /*reiniciamos tiempo_espera*/
                        clearTimeout(t);
                    }
                    $(tip).css({
                            /*colocamos el tooltip según el ratón y el tamaño del tooltip*/
                            left: e.clientX - ($(tip).width() / 2) + opts.ajuste_left + 'px',
                            top: e.clientY - $(tip).height() * 3 / 2 + opts.ajuste_top + 'px'
                        }).fadeIn(opts.fade_time);
    
                });
    
                $(this).bind('mousemove', function(e) {
                    if (opts.seguir_raton) {
                        var disp = $(this);
                        var tip = $(this).next(opts.tooltip);
                        $(tip).css({
                                /*Pues recolocamos el tooltip*/
                                left: e.clientX - ($(tip).width() / 2) + opts.ajuste_left + 'px',
                                top: e.clientY - $(tip).height() * 3 / 2 + opts.ajuste_top + 'px'
                            });
                    }
                });
    
                $(this).mouseout(function() {
                    /*añadimos tiempo_espera por si el usuario se sale sin querer*/
                    t = setTimeout("$('" + opts.tooltip + "').fadeOut(" + opts.fade_time + ")", opts.tiempo_espera);
                });
            });
        };
    })(jQuery);
    

    usage:

    $("#selector").meliaTooltip({
        tooltip: '.miTooltip',
        fade_time: 300
    });
    
    0 讨论(0)
  • 2021-01-27 12:33

    Try this

    $.fn.meliaTooltip = function(options){
    
    return this.each(function(){
    /*OPCIONES DEL PLUGIN*/
            //var selector = '.disparador'; //elemento que activará el tooltip
    
            //You can take all the below settings from options param
            var tooltip = '.miTooltip';   //elemento con el contenido HTML a mostrar por el tooltip
            var tiempo_espera = 0;        //tiempo que el tooltip esperará a desaparecer una vez el raton se salga del disparador
            var seguir_raton = true;      //booleana que determina si el tooltip debe seguir el movimiento del raton o no
            var ajuste_top = 0;           //distancia vertical de ajuste
            var ajuste_left = 0;          //distancia vertical de ajuste
            var fade_time = 300;          //tiempo de la transición de mostrar/ocultar
            /*ARCHIVOS NECESARIOS DEL PLUGIN - NO TOCAR*/
    
    
    
    
            /* Detectar que el raton pasa por encima */
            $(this).hover(function(e) {
              /*Guardamos el selector del disparador y de tooltip en una variable*/
                var disp = $(this);
                 var tip= disp.next(tooltip);
                 var tip_text = tip.html();
                 //alert(tip_text);
                 var new_content = '<span class="left"></span ><span class="contenido">'+tip_text+'</span ><span class="right"></span ><span class="bottom"></span >';
                 //alert(new_content);
                 tip.html(new_content);
                if(typeof t != 'undefined'){
                    /*reiniciamos tiempo_espera*/
                    clearTimeout(t);
                }
                    $(tip).css({
                        /*colocamos el tooltip según el ratón y el tamaño del tooltip*/
                        left: e.clientX-($(tip).width()/2)+ajuste_left+'px',
                        top: e.clientY-$(tip).height()*3/2+ajuste_top+'px'
                    }).fadeIn(fade_time);
    
            });
            /* En caso de que se mueva el raton */
            $(this).bind('mousemove', function(e){
                if(seguir_raton==true){
                    var disp = $(this);
                    var tip= $(this).next(tooltip);
                   $(tip).css({
                       /*Pues recolocamos el tooltip*/
                        left: e.clientX-($(tip).width()/2)+ajuste_left+'px',
                        top: e.clientY-$(tip).height()*3/2+ajuste_top+'px'
                    });
                }
            });
    
            $(this).mouseout(function() {
                /*añadimos tiempo_espera por si el usuario se sale sin querer*/
                t = setTimeout("$('"+tooltip+"').fadeOut("+fade_time+")",tiempo_espera);
            });
       });
    };
    

    Usage

    $("#testTooltip").meliaTooltip();
    
    0 讨论(0)
提交回复
热议问题