2010-10-07 5 views
14

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

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

или

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

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

спасибо!

ответ

33

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

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

$ (это) .data() является очень удобным местом для хранения этих видов вещей. +1 для упоминания об этом. :-) –

+0

спасибо! это решение интересно! могу ли я знать, как я могу использовать эти сохраненные данные? Мне нужно передать данные в var, как это мой первоначальный путь var = $ (this) .attr («title»); благодаря! – laukok

+0

$ (это) .data ("title") предоставит вам доступ к сохраненным данным. – FRotthowe

6

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

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

спасибо за это! – Romtim

1

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

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

$(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

спасибо. Приятно знать, что! Я обойду его и не буду добавлять атрибуты заголовка в свой тег :-) – laukok

3

Спасибо за ваше решение. У меня была такая же проблема в проекте. Проблема заключалась в появлении длинного уродливого названия, когда я наводил изображение, и мне нужен заголовок в всплывающем окне, потому что в атрибуте 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

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

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

и выбрать значение атрибута с помощью jquery на mouseenter/наведите курсор следующим образом

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

Пользовательские, нестандартные атрибуты должны иметь префикс «data-». – cpburnz

9

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

$(document).ready(function(){ 
 
     $("a") 
 
     \t .mouseenter(function() { \t 
 
     \t \t var title = $(this).attr("title"); 
 
     \t \t $(this).attr("tmp_title", title); 
 
     \t \t $(this).attr("title",""); 
 
     \t }) 
 
     \t .mouseleave(function() { 
 
     \t \t var title = $(this).attr("tmp_title"); 
 
     \t \t $(this).attr("title", title); 
 
     \t }) 
 
     \t .click(function() { \t 
 
     \t \t var title = $(this).attr("tmp_title"); 
 
     \t \t $(this).attr("title", title); 
 
     \t }); 
 
     }); 
 
     });

+0

Удивительный! Это работает для меня без проблем. –

+0

@DeeaB: Ваше приветствие .. Рад помочь ..^_^ –

+0

Это работает для меня тоже .. Спасибо Ridwan – Gops

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