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

... - это код.Можно ли скрыть заголовок href?

Мне нужно использовать атрибут title из-за slimbox, но я хочу скрыть заголовок-текст, который появляется при наведении указателя мыши на ссылку.

Любые идеи?

+6

Да, если вы посмотрите на обманщика: http://stackoverflow.com/questions/1299772/jquery-hide-native-tooltip-resolved или здесь: http://stackoverflow.com/questions/457366/disabling -browser-tooltips-on-links-and-abbrs –

+0

В Slimbox не требуется атрибут 'title', он по умолчанию используется для совместимости с лайтбокс, но вы можете легко изменить его на любой другой атрибут. Пользовательская функция может быть добавлена ​​к не обфускации части скрипта. Пожалуйста, прочитайте документацию API о функции «LinkMapper». – BladeCoder

+0

переопределяет функцию, загружающую заголовок из переменной «title» в нечто другое, например title_text, обычно это как два vars, тот, который установлен, и тот, который сохраняет текст, ваша новая переменная не будет использоваться вашим браузером ergo don ' t отображать его на hover – Alexis

ответ

15

Предположим, вы используете тег изображения в тег, вы можете просто использовать альтернативный заголовок для изображения (даже пробел), и это будет перезаписывать заголовок ссылки, когда вы наводите на нее курсор.

+0

Хотя это работает, стоит отметить, что он больше не является W3C. Атрибуты не должны иметь начальные или конечные пробелы. – asiby

0

Нет гарантий, но в зависимости от того, как работает Slimbox, вы можете включить заголовок, а затем использовать что-то вроде jQuery, чтобы удалить его через несколько секунд после загрузки. Предполагая, что Slimbox индексирует атрибут Title и сохраняет его где-то после его чтения, вы можете безопасно удалить его после этого.

0

Не могли бы вы просто пропустить ссылки в DOM и установить атрибут title в пустую строку.

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

если вы используете JQuery, вы можете сделать следующее

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

(не проверял, хотя)

+3

Я думаю, что вы имели в виду 'e.preventDefault()'. Я тоже не думаю, что это работает. –

+0

yup. не работает. – Salty

1

Вы не должны использовать атрибут title с Slimbox. См. Пример нескольких изображений в верхней части этой страницы: http://code.google.com/p/slimbox/wiki/MooToolsAPI.

Вы можете просто удалить атрибут title с вашего якоря, и передать title текст (описание вашего изображения) к функции Slimbox open, который вы назвали бы использованием onclick события вашего якоря.

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; 
     } 
    }} 

Цитирую ответ Aron Rotteveel «сек от первого боян, связанного с моим комментарием к этому вопросу (Disabling browser tooltips on links and <abbr>s)

17

Как насчет хорошего простой:

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

(Лучше, положить что-то на самом деле полезное в вложен названия.)

+0

Использует заголовок в span valid html? – Nima

+2

Да, 'title' действует для всех элементов. – bobince

6

в отношении «как о хорошем простом» предложении я видел перечисленных на нескольких сайтах, я лично не предложил бы это по двум причинам.

  1. Считыватели экрана и люди с ослабленным зрением полагаются на атрибуты заголовка, которые считываются вслух. Я считаю, что это была первоначальная цель и причина для них в якорных тегах и является крупным аспектом Секции доступа к веб-сайтам США 508. Я думаю, что в этом случае программа чтения с экрана будет читать все заголовки; первый, а затем второй, который может быть очень запутанным для пользователя с ослабленным зрением. Они не понимают, почему они слышат два esp, если они содержат другой текст. О чем говорят два разных якоря? Если да, то почему они не могут щелкнуть или выбрать другой, который они слышат, и продолжать получать только одну веб-страницу (как сценарий).

  2. Если вы разместите дополнительный текст в Google заглавных букв, и многие другие поисковые системы могут просмотреть это действие как черную шляпу seo и могут привести к тому, что ваш сайт будет запрещен из этого списка поисковых систем (например, набивка), это произошло с BMW в Германия от Google уже.

лично я считаю, что лучший способ сохранить атрибут заголовка, как это должно было функционировать, а затем использовать Javascript или CSS, чтобы как-то скрыть. Эти методы не повлияют на экранные программы, веб-сканеры и пользователи с ослабленным зрением.

+1

+1 для удобства доступности и правильного использования атрибута Title. –

9

Это очень легко с JQuery

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

Это удалит название из любого а элементы класса Li пункта меню - конечно, вы можете получить фантазии, так что они просто скрывают от мыши над :)

+4

[Анонимные комментарии пользователей] (http://stackoverflow.com/spected-edits/227678), что вы можете просто использовать '.removeAttr ('title'); вместо – Rup

3

Мне понравилось jquery ...;) Мне было нужно это для портфолио: title-tags для лайтбокса, но ни один на мыши. Это помогло мне, спасибо за подсказку!

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

самый простой способ будет:

после использования вашего Slimbox, добавьте следующий код под ним:

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

надеюсь, что это может помочь ..

0

Используя идею из Дэвид Томас, вы можете создать более элегантное решение, используя 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

JQuery решение - это должно быть прямо вперед:

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

Это мое решение JQuery, он делает все, что вам нужно, и сохранить правильное использование атрибута заголовка. Просто измените селектор в соответствии с вашими потребностями.

/* 
* 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

Как прочитать на другой вопрос, я предлагаю, чтобы переключить «название» атрибут некоторых «данных титула» для того, чтобы сохранить его для чтения с экрана для пользователей с ограниченными физическими возможностями. Как сказал Локин, поддержание удобства использования сайта для людей с ограниченными возможностями и инвалидов должно быть также предметом озабоченности при разработке.

+0

Если slimbox полагается на атрибут title, название данных, вероятно, нарушит эту функциональность. – CodeMoose

Смежные вопросы