Подтвердить что ты не робот

Скрыть встроенную подсказку с помощью jQuery

Есть ли способ скрыть действие встроенной всплывающей подсказки, когда пользователь навешивается над тегом привязки с атрибутом title? Я не хочу удалять его, просто не отображает неприятную желтую рамку, которая является действием всплывающей подсказки по умолчанию.

UPDATE:

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

Удаление значения атрибута title не является опцией, если кто-то не может понять, как добавить его для события onclick?

КОД РАБОТЫ НИЖЕ

$('[title]').each( function() {
    var $this = $(this);
    $this.data('title',$this.attr('title'));
    $this.removeAttr('title');
});

$('a').click( function() {
    var $this = $(this);
    var title = $this.data('title');
    ... do your other stuff...
});
4b9b3361

Ответ 1

По-видимому, атрибут title не попадает под обычный обработчик событий. Во всяком случае, мой оригинальный ответ не сработал, хотя я буду продолжать играть с ним, чтобы посмотреть, смогу ли я заставить его работать. Если вам нужно сохранить атрибут title, но не хотите всплывающего эффекта, как указано в ваших комментариях, затем сохраните атрибут title в данных элемента и используйте его оттуда.

$('[title]').each( function() {
    var $this = $(this);
    $this.data('title',$this.attr('title'));
    $this.removeAttr('title');
});

$('a').click( function() {
    var $this = $(this);
    var title = $this.data('title');
    ... do your other stuff...
});

Оригинальный ответ:

Дайте каждому элементу, который имеет заголовок, определенный наклон над обработчиком, который предотвращает действие по умолчанию.

$('[title]').hover(
   function(e) {
       e.preventDefault();
   },
   function() { }
);

За исключением тестирования, он не работает.

Ответ 2

Вы можете удалить его:

$("a").removeAttr("title");

Это удалит его только для пользователей js, поэтому он доступен и доступен для поисковых систем.

Ответ 3

Я использовал вариацию кода bEj ni c bEj, потому что мне нужно было сохранить заголовок содержимого при наведении, но все же необходимо было подавить поведение по умолчанию.

// Suppress default tooltip behavior on hover
var tempTitle = "";
$('abbr[title],dfn[title],span.info-tip[title],').hover(
function(e){
    e.preventDefault();
    tempTitle = $(this).attr('title');

    $(this).attr('title', '');
        // add attribute 'tipTitle' & populate on hover
        $(this).hover(
            function(){
                $(this).attr('tipTitle', tempTitle);
            }
        );
    },
   // restore title on mouseout
   function() {
   $(this).attr('title', tempTitle);
   }
);

Это позволяет мне сделать это в моей таблице стилей:   /* abbr & tooltip styles: first, the immediate descendants of the content area are set to highlight abbreviations on hover, but avoiding lists; as we don't want *all* abbreviations highlighted when you hover on a root list */

abbr,
abbr[tipTitle],
dfn,
dfn[tipTitle],
span.info-tip,
span.info-tip[tipTitle] {
border-bottom:none; /*remove border 1st, then let following rules add it back in*/
}

p:hover abbr[tipTitle],
li:hover abbr[tipTitle],
dl>*:hover abbr[tipTitle],
label:hover abbr[tipTitle],
p:hover dfn[tipTitle],
li:hover dfn[tipTitle],
dl>*:hover dfn[tipTitle],
label:hover dfn[tipTitle],
p:hover span.info-tip[tipTitle],
li:hover span.info-tip[tipTitle],
dl>*:hover span.info-tip[tipTitle],
label:hover span.info-tip[tipTitle]
{
position: relative;
text-decoration: none;
border-bottom: 1px dotted #333;
cursor: help;
}

p:hover abbr[tipTitle]:before,
li:hover abbr[tipTitle]:before,
dl>*:hover abbr[tipTitle]:before,
label:hover abbr[tipTitle]:before,
p:hover dfn[tipTitle]:before,
li:hover dfn[tipTitle]:before,
dl>*:hover dfn[tipTitle]:before,
label:hover dfn[tipTitle]:before,
p:hover span.info-tip[tipTitle]:before,
li:hover span.info-tip[tipTitle]:before,
dl>*:hover span.info-tip[tipTitle]:before,
label:hover span.info-tip[tipTitle]:before {
content: "";
position: absolute;
border-top: 20px solid #803808;
border-left: 30px solid transparent;
border-right: 30px solid transparent;
visibility: hidden;
top: -18px;
left: -26px;
}

p:hover abbr[tipTitle]:after,
li:hover abbr[tipTitle]:after,
dl>*:hover abbr[tipTitle]:after,
label:hover abbr[tipTitle]:after,
p:hover dfn[tipTitle]:after,
li:hover dfn[tipTitle]:after,
dl>*:hover dfn[tipTitle]:after,
label:hover dfn[tipTitle]:after,
p:hover span.info-tip[tipTitle]:after,
li:hover span.info-tip[tipTitle]:after,
dl>*:hover span.info-tip[tipTitle]:after,
label:hover span.info-tip[tipTitle]:after {
content: attr(tipTitle);
position: absolute;
color: white;
top: -35px;
left: -26px;
background: #803808;
padding: 5px 15px;
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;
white-space: nowrap;
visibility: hidden;
}

p:hover abbr[tipTitle]:hover:before,
li:hover abbr[tipTitle]:hover:before,
dl>*:hover abbr[tipTitle]:hover:before,
label:hover abbr[tipTitle]:hover:before,
p:hover dfn[tipTitle]:hover:before,
li:hover dfn[tipTitle]:hover:before,
dl>*:hover dfn[tipTitle]:hover:before,
label:hover dfn[tipTitle]:hover:before,
p:hover span.info-tip[tipTitle]:hover:before,
li:hover span.info-tip[tipTitle]:hover:before,
dl>*:hover span.info-tip[tipTitle]:hover:before,
label:hover span.info-tip[tipTitle]:hover:before,
p:hover abbr[tipTitle]:hover:after,
li:hover abbr[tipTitle]:hover:after,
dl>*:hover abbr[tipTitle]:hover:after,
label:hover abbr[tipTitle]:hover:after,
p:hover dfn[tipTitle]:hover:after,
li:hover dfn[tipTitle]:hover:after,
dl>*:hover dfn[tipTitle]:hover:after,
label:hover dfn[tipTitle]:hover:after,
p:hover span.info-tip[tipTitle]:hover:after,
li:hover span.info-tip[tipTitle]:hover:after,
dl>*:hover span.info-tip[tipTitle]:hover:after,
label:hover span.info-tip[tipTitle]:hover:after {
visibility: visible;
transition: visibility 0s linear .3s;
-moz-transition: visibility 0s linear .3s;
}

Предоставление мне привлекательных всплывающих подсказок, где они мне нужны, без всплывающей подсказки по умолчанию.

Ответ 4

Чтобы получить это из названия, я бы использовал метод data():

$(document).ready( function () {
    $('.items_with_title').each( function () {
        $(this).data('title', $(this).attr('title') );
        $(this).removeAttr('title');
    });
});

// to access it
$(document).ready( function () {
    $('A').click( function () {
        alert($(this).data('title'));
    });
});

Вы также можете сделать селектор для любого элемента с атрибутом title:

$('*[title]').each(...

Ответ 5

Оригинальный плакат только хотел отключить собственное действие .tooltip(). Если это так, используйте следующее простое решение:

$(function() {
    $( document ).tooltip({
        items: "[data-tooltip]",
        content: function() {
            var element = $( this );
            if ( element.is( "[data-tooltip]" ) ) {
                return element.attr('data-tooltip');
            }
        }
    });
});

Теперь атрибут [title] отключен, и всплывающая подсказка будет запускаться только тогда, когда у элемента есть атрибут [data-tooltip]. Определяя большее количество "элементов", вы можете создавать разные поведения и стили:

$(function() {
    $( document ).tooltip({
        items: "[data-tooltip],img[alt]",
        content: function() {
            var element = $( this );
            if ( element.is( "[data-tooltip]" ) ) {
                return element.attr('data-tooltip');
            }
            if ( element.is( "[alt]" ) ) {
                return element.attr('alt') + something_else;
            }
        }
    });
});

http://jqueryui.com/tooltip/#custom-content и http://api.jqueryui.com/tooltip/#option-items

Ответ 6

var tempTitle = "";
$('a[title]').hover(
    function(e){
         e.preventDefault();
         tempTitle = $(this).attr('title');

         $(this).attr('title', '');

             $(this).mousedown(
                function(){
                    $(this).attr('title', tempTitle);
                }
            );
    }
   ,
   function() {
       $(this).attr('title', tempTitle);
   }
);

Попробуйте это, как собака!

Ответ 7

Я знаю, что это сообщение о JQuery, но я просто столкнулся с этой проблемой и в основном связан с lighboxes, поэтому здесь исправление Mootools для iaian7 Mediabox Advanced на ссылках на изображения, если кому-то это нужно Исправление будет работать и на любом из них http://line25.com/articles/rounding-up-the-top-10-mootools-lightbox-scripts

if ($$('.lbThumb').length > 0) { //  lbThumb a class or what ever you are using
    $$('.lbThumb').each(function (el) { // same here , your a class

        var savedtitle = el.get('title');
        var getimage  = el.getElement('img'); 
                    // must use image click since Mediabox will kill our a element click
        getimage.addEvent('click', function () {
            el.set('title',savedtitle );
        });
        // hide nasty a tooltip 
        el.addEvents({
        mouseenter: function () {
          el.erase('title');
        },
        // bring it back 
        mouseleave: function () {
          el.set('title',savedtitle );

        }
      });

   });
}

Ответ 8

Его работает следующим образом:

Переименуйте в sTitle вместо атрибута title по умолчанию, и если вам нужно вызвать его из JQuery:

GetAttribute ( 'stitle')

Он работает на всех.

Ответ 9

Вы можете подключить событие "mouseenter" и вернуть значение false, которое остановит отображение всплывающих подсказок.

$(selector).on( 'mouseenter', function(){ return false; });

Ответ 10

var title;
$('a[title]').hover(function () {
   title = $(this).attr('title');
   $(this).attr('title','');
}, function () {
   $(this).attr('title',title);
});

Ответ 11

Вот еще один побочный эффект, который вам может пригодиться, если вы используете плагин Lightbox JS, которому по-прежнему нужен атрибут "title" для обработки заголовков на слайдах лайтбокса:

$('a.lightbox-trigger').each(function() { // Process all lightbox trigger links

    $(this).mouseover(function() {
        if(!$(this).data('keep'))  // 1st time = FALSE, so make the swap
            $(this).attr('data-title', $(this).attr('title')).attr('title', '');
        $(this).data('keep', true); // Preserve value if hovered before clicked
    });

    $(this).mousedown(function() {
        $(this).attr('title', $(this).attr('data-title')).attr('data-title', '');
        $(this).data('keep', false); // Mark element as safe to swap again
    });
});