2010-10-07 29 views
14

Tôi đã thấy rằng hầu hết mọi người sẽ làm điều đó với giải pháp này khi di chuột qua, chúng tôi sẽ lấy giá trị trong thuộc tính TITLE, sau đó, loại bỏ giá trị của nó. Trong khi di chuột ra, chúng tôi sẽ đưa nó trở lại.jquery: ẩn thuộc tính tiêu đề nhưng không xóa nó

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

hoặc

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

Tôi muốn biết là nó có thể chỉ ẩn các tooltip xuất hiện hơn loại bỏ các thuộc tính tiêu đề?

cảm ơn!

Trả lời

33

Không, bạn không thể, vì trình duyệt sẽ quyết định việc cần làm với thuộc tính tiêu đề. Tuy nhiên, bạn có thể lưu nó với nút để tham khảo sau này (và có thể khôi phục lại tiêu đề):

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

$ (này) .data() là một nơi rất hữu ích để lưu trữ những loại của sự vật. 1 để đề cập đến nó. :-) –

+0

cảm ơn! giải pháp này là thú vị! tôi có thể biết cách tôi có thể sử dụng dữ liệu được lưu trữ này không? Tôi cần phải chuyển dữ liệu vào một var như thế này là con đường var gốc của tôi = $ (this) .attr ("title"); cảm ơn! – laukok

+0

$ (this) .data ("title") sẽ cấp cho bạn quyền truy cập vào dữ liệu được lưu trữ. – FRotthowe

6

Bạn có thể lưu giữ tiêu đề ở nơi nào đó trong khi chuột trên phần tử. Tuy nhiên, bạn không cần phải lưu trữ nó trong chính DOM; bạn có thể giữ nó trong một biến thể JS:

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

cảm ơn vì điều này! – Romtim

1

Sợ bạn không thể. Phương pháp preventDefault() dường như không hoạt động cho điều này, điều này thật không may vì nó sẽ là lý tưởng.

Nếu bạn thực sự cần phải giữ lại danh hiệu thuộc tính bạn có thể làm một cái gì đó như thế này:

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

Nó khá phức tạp mặc dù. Trừ khi có một lý do cụ thể mà bạn cần phải giữ lại các thuộc tính tiêu đề, tôi sẽ loại bỏ chúng.

+0

cảm ơn. tốt để biết điều đó! Tôi sẽ làm việc xung quanh nó và tránh đặt thuộc tính tiêu đề trong thẻ của tôi :-) – laukok

3

cảm ơn vì giải pháp của bạn. Tôi đã có cùng một vấn đề trong một dự án. Vấn đề là một tiêu đề xấu xí đã xuất hiện khi tôi di chuyển hình ảnh và tôi cần tiêu đề trong cửa sổ bật lên vì trong thuộc tính tiêu đề, tôi đặt liên kết mua cho sản phẩm. nhưng như tôi đã nói, một tiêu đề dài bao gồm cả thẻ cũng xuất hiện trên di chuột. Vì vậy, tôi chỉ cần thêm một chức năng .click vào cuối giải pháp của bạn, tôi không biết nếu nó có thể giải quyết điều này một cách ngữ nghĩa hơn, vì tôi không phải là một chuyên gia jquery. kịch bản hoàn chỉnh được dán bên dưới, liên quan :)

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

Đây là một giải pháp tốt, đặt tên cho một thuộc tính mới nói 'fancytitle' ở vị trí của 'tiêu đề' thông thường như thế này

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

Và chọn giá trị của thuộc tính với jquery trên mouseenter/hover như thế này

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

Thuộc tính tùy chỉnh, không chuẩn nên được bắt đầu bằng "data-". – cpburnz

9

Công trình này hoạt động.

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

Tuyệt vời! Điều này làm việc cho tôi mà không có vấn đề gì. –

+0

@DeeaB: Chào mừng bạn .. Rất vui được trợ giúp ..^_^ –

+0

Điều này cũng phù hợp với tôi .. Cảm ơn Ridwan – Gops

Các vấn đề liên quan