2011-02-02 18 views
9

Tôi đang sử dụng khung công cụ jQuery của Flowplayer (cụ thể là plugin tooltips) trong một bảng, ngoài lịch jQuery UI.Công cụ jQuery -> Phương pháp tiêu diệt chú giải công cụ?

Mỗi hàng của bảng có khả năng chèn một hàng ở trên và dưới nó.

Khi thực hiện việc này, tôi nhân bản đối tượng đã nhấp (sự kiện và đối tượng) và chèn trực tiếp lên trên hoặc xuống dưới.

Sau khi thêm hàng mới, tôi làm mới bảng, tạo id mới cho các phần tử của tôi, khởi động lại datepicker và cố gắng khởi động lại chú giải công cụ.

Tôi đang tìm cách phá hủy hoàn toàn từ bản sao và đăng ký lại.

Tôi đang tìm kiếm một cái gì đó tương tự như phương pháp datepicker('destroy').

$j($editRow).find('input.date').datepicker('destroy').datepicker({dateFormat: 'mm-dd-yy', defaultDate : defaultDateStr});

Tôi đã cố gắng:

  1. để unbind mouseover và tập trung sự kiện: khi tooltip reinvoking, nó tự động đi cho đối tượng nó đã được thực hiện từ.

  2. ẩn phần tử DOM tooltip, xóa đối tượng chú giải công cụ khỏi mục tiêu và áp dụng lại nó. Điều tương tự xảy ra là (1)

Có cách nào để tôi có thể tự tạo phương pháp phá hủy không?

+0

Bạn có thể giải thích ý bạn bằng cách "tự động tìm đối tượng được tạo từ" khi bạn cố gắng hủy liên kết chú giải công cụ không? –

+0

bạn có thể đăng mã bạn đang sử dụng để gọi các chú giải công cụ và mã bạn đã sử dụng để thử và hủy liên kết chúng không? – themerlinproject

Trả lời

5

Tôi đã thử phương pháp kwicher, và không thể làm cho nó làm việc. Mặc dù tôi đã cố gắng thay đổi mã được rút gọn, và tôi không hoàn toàn chắc chắn rằng tôi đã tìm đúng nơi để thực hiện thay đổi.

Tuy nhiên, tôi đã làm việc này. ValidationFailed là một lớp tôi đang áp dụng cho tất cả các trường đầu vào cũng có chú giải công cụ được áp dụng cho chúng.

$('.validationFailed').each(function (index) { 
    $(this).removeData('tooltip'); 
}); 

$('.tooltip').remove(); 

Tôi đã thử một số cách khác nhau và đây là kết hợp duy nhất cho phép tôi thêm các mẹo công cụ bổ sung sau khi xóa mà không ngăn các chú giải công cụ mới hoạt động bình thường.

Tốt nhất tôi có thể biết, việc loại bỏ lớp công cụ xử lý việc loại bỏ các div chú giải công cụ thực tế, sự kiện của chúng cũng được kết nối trực tiếp. The .removeData cho phép tooltip được tái ràng buộc trong tương lai.

1

Nếu bạn vẫn cần nó, bạn có thể làm như sau: - trong file thực hiện tooltip thêm chức năng sau

destroy: function(e) { 
     tip.detach(); 
     } 

đâu đó trong:

$.extend(self, { 
... 

tôi có sau khi các chức năng có nguồn gốc cuối cùng .

Sau đó, khi bạn muốn loại bỏ đầu, hỏa hoạn:

$(.tip).data('tooltip').destroy(); 

Nó nên làm các trick

K

5

xây dựng trên ý tưởng của bạn và câu trả lời của Tom, tôi thấy rằng ba điều cần thiết:

  1. loại bỏ dữ liệu 'tooltip' từ tử target tooltip
  2. nghe sự kiện unbind từ tử target tooltip
  3. xóa phần tử (giả sử bạn đang sử dụng cách tiếp cận chú giải công cụ này để cho phép HTML tùy ý trong đầu của bạn)

Vì vậy, chức năng đơn giản này sẽ thực hiện thủ thuật. Chỉ cần truyền cho nó một đối tượng jQuery chứa các phần tử đích của các chú giải công cụ mà bạn muốn hủy.

function destroyTooltips($targets) { 
    $targets.removeData('tooltip').unbind().next('div.tooltip').remove(); 
} 
-1

Có lẽ nó đã quá muộn ... ;-)
Nhưng ở đây bạn có thể tìm thấy tất cả các phương pháp 'tooltip': http://www.w3schools.com/bootstrap/bootstrap_ref_js_tooltip.asp

tôi rời khỏi tip cho một người có thể vượt qua bằng cách, có cùng vấn đề: xử lý các hành động/objs 'tooltip' khác nhau.

0
if($element.data('ui-tooltip')) {//if tooltip has been initialized 
     $element.tooltip('destroy'); 
    }