Jquery: скрыть атрибут title, но не удалять его.

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

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

или

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

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

спасибо!

Ответ 1

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

$(this).data("title", $(this).attr("title")).removeAttr("title");

Ответ 2

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

    $(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);
        	});
        });
      });

Ответ 3

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

(function(){
  var ttext;
  $(yourtargetselectorhere).hover(function(){
    ttext = $(this).attr('title');
    $(this).removeAttr('title');
  },
  function(){
    $(this).attr('title', ttext);
  });
}());

Ответ 4

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

    $(".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);
    });

Ответ 5

Боишься, что не можешь. Метод 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);
        });
});

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

Ответ 6

Вот хорошее решение, назовите новый атрибут say 'fancytitle' вместо обычного 'title', подобного этому

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

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

$('a#demo').attr('fancytitle')