2010-03-14 31 views
6

Tôi có chút mã sau đây, chỉ cần:jQuery live() ... phải bấm hai lần để kích hoạt liên kết?

$(function() { 
    $('a.add-photos-link').live('click', function(e) { 
    $(this).colorbox({ 
     overlayClose: false, 
     onComplete: function() { 
     $('#add_photos').submit(function(e) { 
      // more stuff to do 
      e.preventDefault(); 
     }); 
     } 
    }); 
    e.preventDefault(); 
    }); 
}); 

Tuy nhiên, điều này dường như chỉ để làm việc sau khi single-click vào liên kết hai lần. Các liên kết này được thêm động vào trang (a.add-photos-link).

Tại sao điều này xảy ra và tôi có thể làm gì để khắc phục sự cố để nó kích hoạt sau lần nhấp chuột đầu tiên?

+0

đâu nằm JavaScript trên trang web? Nó được thực thi sau khi cây DOM được xây dựng chưa? –

Trả lời

7

Mã hiện tại của bạn chỉ tạo hộp màu cho liên kết. Nó không mở hộp màu, đó là lý do tại sao bạn cần phải bấm vào liên kết hai lần: một lần để tạo ra nó và một lần nữa để mở nó.

Bạn có thể sử dụng tùy chọn open (as documented) khi tạo hộp thuốc vẽ để mở nó ngay lập tức, như vậy:

$(this).colorbox({ 
    open: true, 
    overlayClose: false, 
    onComplete: function() { 
    // ... 
    } 
}); 
+0

Hoàn hảo. Cảm ơn cho sạch nó lên cho tôi! – neezer

+0

Tôi gặp vấn đề tương tự. Tôi có một hình ảnh trên một trang và tôi đã thêm một sự kiện onclick vào hình ảnh. Tôi đã chỉ định mở: đúng nhưng vẫn cần hai lần nhấp. –

+1

@MarcWilson Tạo câu hỏi mới với chi tiết của bạn. – brianpeiris

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