JQuery: скрыть атрибут заголовка, но не удалить его - PullRequest
14 голосов
/ 08 октября 2010

Я видел, что большинство людей будут делать это с этим решением, что при наведении мыши мы будем брать значение в атрибуте TITLE, а затем удаляем его значение. При отключении мыши мы снова включим его.

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

или

$(this).removeAttr('title'); 

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

спасибо!

Ответы [ 6 ]

33 голосов
/ 08 октября 2010

Нет, вы не можете, так как браузер решит, что делать с атрибутом title.Однако вы можете сохранить его с узлом для дальнейшего использования (и, возможно, для восстановления заголовка):

$(this).data("title", $(this).attr("title")).removeAttr("title");
9 голосов
/ 09 декабря 2014

Это работает.

    $(document).ready(function(){
        $( "a" )
        	.mouseenter(function() {	
        		var title = $(this).attr("title");
        		$(this).attr("tmp_title", title);
        		$(this).attr("title","");
        	})
        	.mouseleave(function() {
        		var title = $(this).attr("tmp_title");
        		$(this).attr("title", title);
        	})
        	.click(function() {	
        		var title = $(this).attr("tmp_title");
        		$(this).attr("title", title);
        	});
        });
      });
6 голосов
/ 08 октября 2010

Вы можете сохранить заголовок где-то еще, когда указатель мыши находится над элементом.Вам не нужно хранить его в самом DOM;Вы можете хранить его в JS-переменной:

(function(){
  var ttext;
  $(yourtargetselectorhere).hover(function(){
    ttext = $(this).attr('title');
    $(this).removeAttr('title');
  },
  function(){
    $(this).attr('title', ttext);
  });
}());
3 голосов
/ 15 июня 2012

спасибо за ваше решение.У меня была такая же проблема в проекте.Проблема заключалась в том, что при наведении на изображение появлялось длинное уродливое название, и мне нужно было всплывающее окно, потому что в атрибуте title я размещаю ссылку на покупку товара.но, как я уже сказал, длинный заголовок, включающий тег, также появлялся при наведении.поэтому я просто добавил функцию .click в конец вашего решения, я не знаю, возможно ли решить это более семантическим способом, так как я не эксперт по jquery.полный сценарий вставлен ниже, привет:)

    $(".collection-box a").hover(function(){

    // Get the current title
    var title = $(this).attr("title");

    // Store it in a temporary attribute
    $(this).attr("tmp_title", title);

    // Set the title to nothing so we don't see the tooltips
    $(this).attr("title","");
    },

    function() { // Fired when we leave the element

    // Retrieve the title from the temporary attribute
    var title = $(this).attr("tmp_title");

    // Return the title to what it was
    $(this).attr("title", title);
    });


   //Restore the title on click
    $(".collection-box a").click(function(){

   // Retrieve the title from the temporary attribute
    var title = $(this).attr("tmp_title");

    // Return the title to what it was
    $(this).attr("title", title);
    });
1 голос
/ 08 октября 2010

Боюсь, что не сможешь. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Метод preventDefault(), кажется, не работает для этого, что является неудачным, потому что это было бы идеально.

Если вам действительно нужно сохранить атрибут title, вы можете сделать что-то вроде этого:

$(document).ready(function(){
        $("a").hover(function(){

        // Get the current title
        var title = $(this).attr("title");

        // Store it in a temporary attribute
        $(this).attr("tmp_title", title);

        // Set the title to nothing so we don't see the tooltips
        $(this).attr("title","");
        },

        function() { // Fired when we leave the element

        // Retrieve the title from the temporary attribute
        var title = $(this).attr("tmp_title");

        // Return the title to what it was
        $(this).attr("title", title);
        });
});

Хотя это довольно запутанно. Если нет особой причины, по которой вам нужно сохранять атрибуты заголовка, я бы просто удалил их.

0 голосов
/ 02 июня 2014

Вот хорошее решение, назовите новый атрибут, скажем, «fancytitle» вместо обычного «title», как это

<a href='#' customtitle='visit google' id='demo'> Visit Google Search </a>

И выберите значение атрибута с помощью jquery при наведении курсора мыши, как это

$('a#demo').attr('fancytitle')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...