2011-07-11 46 views
12

tiene un problema con la información de herramientas Herramientas plugin de jQuery (http://flowplayer.org/tools/tooltip/index.html) tengo que cambiar el título del elemento ..jQuery Tooltip Herramientas - Cambiar título

reloadTooltip(); 
    $("#example").attr('title', obj.text); 
    reloadTooltip(); 

    function reloadTooltip(){ 
     $("[title]").tooltip({ position: "bottom right", opacity: 1 }); 
    } 

HTML Parte:

<span title="text" id="example"></span> 

Con mi solución i consiguió finalmente 2 títulos, una encima de la otra. El sin estilo (js ignorado) es el nuevo. El título de la herramienta Tooltip todavía no ha cambiado.

gracias

+0

Imagen del fracasan: http://i.imgur.com/Be4zS.png también encontró que hay un wich clase contiene todos los textos de información sobre herramientas ..

(auto generada por el plugin jQuery creo) – smo

Respuesta

19

I Estoy a punto de hacer lo mismo. Miré a través del código del complemento Tooltip y descubrí una forma rápida y fácil de actualizar la información sobre herramientas. El complemento elimina el atributo de título y lo coloca en una propiedad de elemento llamada tooltipText. En jQuery 1.6+, se puede manipular de esta manera:

// get the current tooltip content 
$('#someElement').prop('tooltipText') 

// set the tooltip content 
$('#someElement').prop('tooltipText', 'w00t'); 

El plugin establece la propiedad ToolTipText (nota la capitalización) en la línea 55 en la versión 1.3. Los cambios hechos de esta manera son instantáneos por lo que puedo decir.

Si al hacer la manipulación directa elemento, el contenido de información de herramienta se encuentra en:

var e = document.getElementById('#someElement'); 
alert(e.tooltipText); 
e.tooltipText = 'w00t'; 
+0

¡Gracias! Esto fue útil. – Ryan

2

¿Qué le parece esto?

initTooltip(); 
    updateTooltip(obj.text); 


    function initTooltip(){ 
     $("[title]").tooltip({ position: "bottom right", opacity: 1 }); 
    } 

    function updateTooltip(text){ 
     $("[title]").attr('title', text); 
     $("[title]").data('title',text); 
     $("[title]").removeAttr("title"); 
    } 

No sé si es el mejor enfoque, pero creo que podría funcionar para usted.


¿Es correcto el obj.text? ¿Qué viene en obj.text?

+0

si esto es correcto Puedo alertarlo sin problema. var obj = jQuery.parseJSON (datos); – smo

+0

hay una razón para que no lo haga: function reloadTooltip() { $ ("# example"). Tooltip ({position: "bottom right", opacity: 1}); } –

+0

Ya lo he intentado.Desafortunadamente no hay diferencia con la posibilidad mencionada anteriormente :( – smo

0

Intente modificar el valor del título llamando al método de datos de jQuery ("título").

+0

Estoy usando v1.2.6 y esto es lo único que funcionó para mí. '$ ('tooltip selector'). data (" title "," some tooltip text ");' –

8

No sé si todavía está buscando la respuesta a esto, pero acabo de pasar un buen par de horas tratando de ordenar lo mismo y he encontrado la respuesta (¡tan simple como siempre lo son una vez que los encuentra!) en la documentación de API.

Cualquiera sea el elemento en el que establezca la información sobre herramientas en primer lugar, obtenga la API de información sobre herramientas desde allí y establezca el nuevo valor. es decir, si configura la información sobre herramientas en un elemento con id "myTip"

$('#myTip').data('tooltip').getTip().html("New string!") ; 

Et voila.

No debería necesitar eliminar el título (y no debería hacerlo de todos modos, ya que la información sobre herramientas se ha inicializado de forma diferida). En lugar de utilizar la configuración cancelDefault:

http://flowplayer.org/tools/tooltip/index.html

+0

Esto funcionó muy bien. quería crear dinámicamente la información sobre herramientas basada en el elemento que activó la información sobre herramientas. Este es un ejemplo tonto, pero esto es lo que hice: onBeforeShow: function (b) {this.getTip(). html ($ (b.target). attr ('id'));} – Eric

1

Otra solución para cambiar el título de forma dinámica es utilizar el evento onBeforeShow:

jQuery('#myselector').tooltip({onBeforeShow: tooltipBeforeShow}); 

... 

function tooltipBeforeShow() { 
    // On production you evaluate a condition to show the apropiate text 
    var text = 'My new text for the <b>tooltip</b>'; 
    this.getTip().html(text); 
} 

this se refiere al objeto sobre herramientas en la función de evento

+0

cómo descubriste esta víspera nt? esto no está en el documento. – alexserver

0

que también tuvo problemas con esto.Y el código que funcionó para mí:

$('.yourelement').attr('tooltipText', newToolTip); 

Tenga en cuenta las mayúsculas T. La minúscula T no funcionará.

14

lo tengo! de acuerdo con la versión reciente de información sobre herramientas (a partir de v2.3.1) https://github.com/twitter/bootstrap/blob/master/js/bootstrap-tooltip.js#L272 necesita establecer el atributo (no la propiedad) 'data-original-title' porque esta es la información sobre herramientas que está utilizando actualmente.

Es un truco, pero espero que funcione para usted, ya que funcionó para mí.

$('#example').attr('data-original-title','the new text you want'); //and that's it. 
+0

Esta es la única respuesta que funciona para mí, en angular v1.3 con bootstrap. – miyasudokoro

+0

Lo mismo para mí con Bootstrap 4 y Angular 5 – hughjdavey

1

Nada funcionó para mí, pero para reinicializar la descripción:

 //Save the current configuration. 
     var conf = trigger.data('tooltip').getConf(); 
     trigger.removeData('tooltip').unbind(); 
     //Add the changed text. 
     var newText = 'Hello World!'; 
     trigger.attr("title", newText); 
     //Reapply the configuration. 
     trigger.tooltip(conf); 

Las respuestas anteriores referentes a getTip() requieren que la información sobre herramientas se muestra al menos una vez; de lo contrario, getTip() produce un nulo.

El uso de OnBeforeShow casi funcionó para mí, pero no pude encontrar la forma de desvincular el evento para que no se ejecutara cada vez que lo mostrara.

Cambiar el título no funcionó para mí por algún motivo, posiblemente debido al hecho de que estaba usando un diseño personalizado.

0

¡La mejor información sobre herramientas para mí! Esta información sobre herramientas como Gmail en

enter image description here

cabeza en el sitio:

<script type='text/javascript' src='//code.jquery.com/jquery-1.9.1.js'></script> 
<script type='text/javascript' src="http://onehackoranother.com/projects/jquery/tipsy/javascripts/jquery.tipsy.js"></script> 
<link rel="stylesheet" type="text/css" href="http://onehackoranother.com/projects/jquery/tipsy/stylesheets/tipsy.css"> 

En HTML:

<a class="example" href="#" original-title="Hello World">Hover over me</a> 

<br/> 

<a class="example" href="#" original-title="Hello World">Hover over me</a> 

<br/> 

<a class="example" href="#" original-title="Hello World">Hover over me</a> 

En los códigos de Javascript:

$(function() { 
    $('.example').tipsy(); 
}); 

Visita Demo de jsfiddle

0

Todo lo anterior no funciona con la última versión de tooltipster, la forma correcta es:

$('#help').data($('#help').data('tooltipsterNs')[0]).Content="new content"; 
4

Todas las otras opciones no funcionan en la última versión de tooltipster (3,3,0) me encontré con este trabajo comando:

$('#selectorElement').tooltipster('content', 'new title'); 
+1

Esta es la única respuesta que funcionó para mí. –

0

esto funcionó para mí:..

$ ('# yourid') attr ('datos originales-título', 'Nuevo mensaje') sobre herramientas ('sh ow '). tooltip (' ocultar ');