2011-12-29 27 views
9

Tôi có một liên kết anchor với một lớp xác định nó được gọi trên fancybox. dụ:Làm thế nào để unbind fancybox từ một bộ chọn

<a class="group">some code here</a> 

Fancybox ràng buộc: ('nhóm')

$('.group').fancybox(); 

Nếu tôi muốn unbind Fancybox với các yếu tố của $ chọn, làm thế nào tôi nên làm điều đó? Tôi đã thử removeClass('group') nhưng không hoạt động.

+0

xin lỗi ví dụ như Ranoy

+0

Nó sẽ có thể để loại bỏ bất kỳ lớp liên kết với Fancybox từ neo nên fancybox sẽ không được kích hoạt trên neo như vậy. Bí quyết là làm thế nào để xác định các neo để sử dụng phương pháp thích hợp. Bạn có thể làm rõ làm thế nào để bạn muốn loại bỏ các lớp học: sau khi sự kiện cụ thể hoặc chỉ trên tải trang? – JFK

+1

Điều này có trả lời câu hỏi này không? http://stackoverflow.com/questions/3654085/unbinding-fancybox-on-thumbnail-fade – CantGetANick

Trả lời

0

Nếu bạn muốn làm điều đó trong mã javascript, Bạn có thể chọn đối tượng thẻ neo và loại bỏ lớp.

Hãy cho một id cho thành phần và gọi phương thức removeClass

<a id="noFancy" class="group">some code here</a> 

Java Script

$(function(){ 
    $("#noFancy").removeClass("group"); 

}); 

Nếu bạn có quyền truy cập vào các đoạn mã HTML, tại sao không chỉ cần thay đổi để lớp để cái gì khác nhưng với cùng giá trị CSS. sau đó bạn không cần phải thực thi mã để loại bỏ các lớp trên documentready

HTML

<a class="groupNormal">I dont want fancybox</a> 

CSS

.groupNormal 
{ 
    // Put the CSS for group class 
} 
+0

xóa lớp học khỏi thẻ neo trong không hoạt động becoz dom thu thập tất cả các phần tử trước khi tải, mặc dù tôi đã xóa lớp neo vẫn đang được gọi trong fancybox – Ranoy

+0

bạn loại bỏ các lớp học trước khi ràng buộc fancybox? – Shyju

+0

Tôi đã xóa lớp đầu tiên trên trang tải, ngay cả trong nguồn trang tôi có thể thấy lớp bị xóa, nhưng nó vẫn tải hộp ưa thích – Ranoy

5
$('.group').unbind('click.fb') 
+1

Điều này làm việc cho tôi. Cảm ơn! –

+4

Điều này không hiệu quả với tôi – Martin

0

Dưới đây là giải pháp mà làm việc cho tôi, tuy nhiên nó không unbind các fancybox trong cảm giác như thế nào người hỏi muốn làm điều đó.

Thứ nhất, không khai báo Fancybox trên nút, nhưng ràng buộc nút để click sự kiện thay vì:

$(".classOfMiniImage").on("click", window.onImageMiniClicked); 

Trong xử lý, bạn có thể sử dụng mã của bạn để kiểm tra điều kiện cho dù bạn cần để hiển thị Fancybox hay không, và sau đó hiển thị nó với rõ ràng href tham khảo:

window.onImageMiniClicked = function() { 
    if (<your_condition>) { 
     $.fancybox({ 
      'href': <link_to_full_size_image>, 
      /* other options below */ 
      'transitionIn': 'elastic', 
      'transitionOut': 'elastic', 
      'speedIn': 600, 
      'speedOut': 600, 
      'overlayShow': true 
     }); 
    } 
} 

Ngoài ra, bạn có thể sử dụng một chút cách tiếp cận khác và để unbind xử lý này bằng tay nếu bạn không cần Fancybox trên các mặt hàng này nữa:

$(".classOfMiniImage").off("click", window.onImageMiniClicked); 

Hy vọng nó sẽ giúp ai đó.

1

Bạn có thể thêm lớp "nofancybox" để liên kết và liên kết này sẽ bị bỏ qua

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