2009-08-24 21 views
20
<a href="link.html" title="Titletext"> 

... es el código.¿Es posible ocultar el título de href?

Necesito usar el atributo title debido a slimbox, pero quiero ocultar el texto del título que aparece al pasar el mouse sobre el enlace.

¿Alguna idea?

+6

Sí, si miras a la víctima aquí: http://stackoverflow.com/questions/1299772/jquery-hide-native-tooltip-resolved o aquí: http://stackoverflow.com/questions/457366/disabling -browser-tooltips-on-links-and-abbrs –

+0

Slimbox no requiere el atributo 'title', lo usa de forma predeterminada para ser compatible con lightbox, pero puede cambiarlo fácilmente por cualquier otro atributo. Se puede agregar una función personalizada a la parte no ofuscada del script. Lea la documentación de API sobre la función "LinkMapper". – BladeCoder

+0

anula la función que carga el título de la variable "título" a otra cosa como title_text, por lo general es como dos vars, uno para configurarlo y el que guarda el texto, su nueva variable no será utilizada por su navegador ergo don ' t mostrándolo en el control deslizante – Alexis

Respuesta

15

Suponiendo que está usando una etiqueta de imagen en la etiqueta, sólo se puede utilizar una alternativa título para la imagen (incluso un espacio) y que sobrescribirá el título del enlace cuando pasas el cursor sobre él.

+0

Aunque esto funciona, vale la pena señalar que ya no es válido para W3C. Se supone que los atributos no tienen espacios iniciales o finales. – asiby

0

Sin garantías, pero dependiendo de cómo funcione Slimbox es posible que pueda incluir el título y luego utilizar algo como jQuery para eliminarlo unos segundos después de la carga de la página. Suponiendo que Slimbox indexe el atributo Título y lo almacene en algún lugar después de leerlo, es posible que pueda eliminarlo de forma segura después de que esto suceda.

0

No podría simplemente recorrer los enlaces en el DOM y establecer el atributo de título en una cadena vacía.

var DOMlinks = document.links; 
for(i=0;i<DOMlinks.length;i++){ 
DOMlinks[i].title = "" 
} 
0

si está utilizando jQuery, se puede hacer siguiendo

$("a").mouseover(function(e){ preventdefault();}); 

(no lo he probado sin embargo)

+3

Creo que quiso decir 'e.preventDefault()'. Aunque no creo que eso funcione. –

+0

yup. no funciona. – Salty

1

Usted no tiene que utilizar el atributo title con Slimbox. Vea el ejemplo de Imágenes Múltiples cerca de la parte superior de esta página: http://code.google.com/p/slimbox/wiki/MooToolsAPI.

Usted puede simplemente eliminar el atributo title de su ancla, y aprobar el texto title (descripción de su imagen) a la función Slimbox open, lo que ustedes llamarían utilizando el evento onclick de su ancla.

2
// Suppress tooltip display for links that have the classname 'suppress' 

var links = document.getElementsByTagName('a'); 
for (var i = 0; i < links.length; i++) { 
    if (links[i].className == 'suppress') { 
     links[i]._title = links[i].title; 
     links[i].onmouseover = function() { 
      this.title = ''; 
     } 
     links[i].onmouseout = function() { 
      this.title = this._title; 
     } 
    }} 

Para citar respuesta Aron Rotteveel 's de la primera víctima vinculado en mi comentario a la pregunta (Disabling browser tooltips on links and <abbr>s)

17

¿Qué tal un buen sencilla:

<a href="link.html" title="Titletext"><span title=" ">text</span></a> 

(Mejor, poner algo realmente útil en el título anidado.)

+0

Está usando título en span válido html? – Nima

+2

Sí, 'title' es válido en todos los elementos. – bobince

6

En lo que respecta al "¿qué tal un simple agradable" sugerencia que he visto enumerado en varios sitios, personalmente no lo sugeriría por dos razones.

  1. Los lectores de pantalla y los usuarios con discapacidad visual confían en los atributos del título que se leen en voz alta. Creo que este fue el propósito inicial y la razón para ellos en las etiquetas de anclaje y es un gran aspecto de la Sección 508 de Accesibilidad web de los EE. UU.. Creo que un lector de pantalla en esta instancia leería todos los títulos; el primero y luego el segundo que podría ser muy confuso para el usuario con discapacidad visual. No entenderían por qué están oyendo dos esp si tiene un texto diferente. ¿Están hablando de dos anclajes diferentes? Si es así, ¿por qué no pueden hacer clic o seleccionar el otro que escuchan y obtener una sola página web (como escenario)?

  2. Si coloca texto adicional en ambos títulos de Google y muchos otros motores de búsqueda pueden ver esta acción como black hat seo y podría llevar a su sitio a ser excluido de esa lista de motores de búsqueda (esto es, relleno), esto le sucedió a BMW en Alemania por Google ya.

yo personalmente podría pensar es el mejor método para mantener el atributo de título ya que estaba destinado a funcionar y luego usar Javascript o CSS para ocultar de alguna manera. Estos métodos no tendrían ningún impacto en los lectores de pantalla, los rastreadores web y los usuarios con discapacidad visual.

+1

+1 para el problema de accesibilidad y el uso correcto del atributo de título. –

9

Esto es realmente fácil con jQuery

$("li.menu-item > a").attr('title', ''); 

que eliminará el título de cualquier unos elementos del menú de ítems li class - por supuesto se puede conseguir la suposición por lo que sólo se esconden en un ratón sobre :)

+4

[Un usuario anónimo comenta] (http://stackoverflow.com/suggested-edits/227678) que simplemente puede usar '.removeAttr ('title');' en su lugar – Rup

3

Me encandiló con jquery ...;) Necesitaba esto para una cartera: etiquetas de título para una caja de luz pero ninguna al pasar el mouse. Esto funcionó para mí, ¡gracias por la pista!

$(function(){ 
    $("li.menu-item > a").hover(function(){ 
     $(this).stop().attr('title', '');}, 
     function(){$(this).stop().attr(); 
     }); 
}); 
1

la forma más sencilla sería:

después de usar su Slimbox, añada el siguiente código debajo de él:

$('*[title]').removeAttr('title'); 

esperan que los pueda ayudar ..

0

Usando la idea de David Thomas, puede crear una solución más elegante usando jQuery:

$('[title]').each(function(){ 
    $(this).data('original-title', $(this).attr('title')); 
}).hover(
    function() { 
     $(this).attr('title','') 
    }, function() { 
     $(this).attr('title',$(this).data('original-title')) 
}); 
0

solución jQuery - esto debe ser simple:

var hiddenTitle; //holds the title of the hovered object 
$("li.menu-item > a").hover(function() { 
    hiddenTitle = $(this).attr('title'); //stores title 
    $(this).attr('title',''); //removes title 
}, function() { 
    $(this).attr('title',hiddenTitle); //restores title 
}); 
0

Esta es mi solución de jQuery, que hace todo lo necesario y mantener el uso correcto del atributo título. Simplemente cambie el selector de acuerdo a sus necesidades.

/* 
* jQuery remove title browser tooltip 
*/ 
var removeTitleSelector = 'a.removeTitle'; 
jQuery('body').on('mouseover', removeTitleSelector, function() { 
    jQuery(this).data('title', jQuery(this).attr('title')); 
    jQuery(this).removeAttr('title'); 
}).on('mouseout', removeTitleSelector, function() { 
    jQuery(this).attr('title', jQuery(this).data('title')); 
}); 
0

que se lee en otra pregunta, me sugieren para cambiar el atributo "title" para algunos "datos de título" con el fin de mantenerlo disponible para los lectores de pantalla para usuarios con discapacidad. Como dijo Lokin, mantener el uso del sitio para los usuarios con problemas o discapacitados también debería ser motivo de preocupación cuando se desarrollan.

+0

Si slimbox se basa en el atributo de título, cambiándolo a data-title probablemente rompería esa funcionalidad. – CodeMoose

Cuestiones relacionadas