2010-01-04 42 views
7

Hành vi bình thường đối với plugin jQuery qTip là tạo một div ẩn mới cho mỗi mục công cụ được chỉ định. Có cách nào để buộc một yếu tố tooltip ẩn duy nhất vào nhiều mục tiêu, để tránh làm lộn xộn DOM không?jQuery qTip: Cách đính kèm một div chú giải công cụ vào nhiều div mục tiêu?

giả tạo Ví dụ:

<div id="foo1"></div> 
<div id="foo2"></div> 

<script> $("#foo1,#foo2").qTip({"content":"test"}); </script> 

<!-- Creates two elements, rather than one: --> 
<div class="qtip" style="display:none;">test</div> 
<div class="qtip" style="display:none;">test</div> 

Nếu qTip là không thể làm được điều này, bất cứ ai có thể giới thiệu một plugin tooltip jQuery dựa trên hỗ trợ HTML giàu chỉ sử dụng một container tooltip đơn? Cảm ơn!

Trả lời

1

Bạn có thể xây dựng các hộp qTip động.

Html:

<a id="some-link" href="#">Show a qTip</a> 
<div id="hidden-element" style="display:none"></div> 

Javascript:

$('#some-link').click(function() { 
    $('#hidden-element').qtip({ 
     content: { 
      text: '<div>Insert content here</div>', 
      prerender: true //as of beta3, this option is false by default 
     }, 
     // etc, etc 
    }); 

    qtip = jQuery('#hidden-element').qtip('api'); 
    qtip.show(); 

    return false; 
}); 

Xem http://craigsworks.com/projects/qtip/docs/api biết chi tiết về các API qTip

EDIT: 22 Tháng 6 năm 2011 (justgrumpy) - As of beta3 the qtip does not prerender by default. 'prerender' phải được đặt thành 'true' trong tùy chọn nội dung cho qtip để hiển thị động.

2

Tôi là người hâm mộ của jQuery Tools Tooltip. Nó cho phép bạn xác định cấu trúc chú giải công cụ của riêng bạn trong HTML và bạn có thể áp dụng chú giải công cụ đó cho bao nhiêu phần tử tùy thích.

1

Thay vì làm danh sách phần tử được phân tách bằng dấu phẩy, hãy sử dụng bộ chọn lớp. Dưới đây là ví dụ:

$('.selectorClass').qTip({arguments:here}); 

Tôi chưa thử nghiệm điều này, nhưng nó sẽ hoạt động tốt.

+1

Điều này không chính xác; chọn theo id (ví dụ: $ ('# id1, # ​​id2')) nhanh hơn nhiều so với việc chọn theo lớp. Để khớp với $ ('. SelectorClass') toàn bộ cây DOM cho trang được phân tích cú pháp, trong khi để khớp với các ID, hai tra cứu bằng cách sử dụng lệnh gọi getElementById được thực hiện. –

+1

Tôi không đồng ý với 'El Yobo' vì câu trả lời này phù hợp với tôi. Câu hỏi không liên quan đến tốc độ. Nó liên quan đến những gì là dễ nhất. – kingchris

+0

Rõ ràng là việc chọn bằng ID nhanh hơn nhiều sau đó chọn theo lớp css. Nhưng vấn đề hiệu suất này chỉ liên quan đến phiên bản Internet Explorer cho đến phiên bản 9. Các trình duyệt IE bắt đầu với phiên bản 9 hoạt động gần như tốt như Chrome, Firefox, Opera, vv từ nhiều năm. Thật không may là reproblem vẫn tồn tại ở các công ty lớn, nơi họ đang sử dụng Internet Explore 8. Tôi đã không nói về IE7 hoặc IE6. Vì vậy, lựa chọn theo lớp css rất nhanh với các trình duyệt hiện đại. –

1

Tôi đã tìm ra cách để có một tooltip div được chia sẻ bởi nhiều hình ảnh tooltip nếu có ai tìm thấy nó tiện dụng

$(".tooltipBearing").qtip({ 
          content: { 
           text: $("#tooltipDiv").html() 
          }   
         }); 

Nếu bạn thất bại trong việc đưa .html() vào đó, bạn sẽ xem chú giải công cụ được chia sẻ hiển thị một lần và sau đó khi bạn kích hoạt nó từ một hình ảnh khác, nó sẽ không hoạt động cho hình ảnh đầu tiên nữa ...

tooltipBearing là một lớp được đặt trên một số hình ảnh trong trang.

tooltipDiv là ID của div chứa nội dung chú giải công cụ của bạn.

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