2010-03-14 9 views
6

Ich habe das folgende Stück Code, einfach:jQuery live() ... muss zweimal geklickt werden, um die Links zu aktivieren?

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

Dies scheint jedoch nur zweimal nach einfachen Mausklick auf den Link zu arbeiten. Diese Links werden dynamisch zur Seite hinzugefügt (a.add-photos-link).

Warum passiert das und was kann ich tun, um es zu beheben, so dass es nach dem ersten Klick ausgelöst wird?

+0

Wo ist Ihr JavaScript auf der Seite liegt Wird es ausgeführt, nachdem der DOM-Baum erstellt wurde? –

Antwort

7

Ihr aktueller Code erstellt nur eine Farbbox für den Link. Die Farbbox wird nicht geöffnet, weshalb Sie zweimal auf den Link klicken müssen: einmal, um ihn zu erstellen und um ihn wieder zu öffnen.

können Sie verwenden, um die open Option (as documented), wenn die colorbox Erstellung sofort, es zu öffnen, etwa so:

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

Perfekt. Danke, dass du das für mich geklärt hast! – neezer

+0

Ich habe ein ähnliches Problem. Ich habe ein Bild auf einer Seite und ich habe dem Bild ein onclick-Ereignis hinzugefügt. Ich habe open angegeben: true, benötigt aber immer noch zwei Klicks. –

+1

@MarcWilson Erstellen Sie eine neue Frage mit Ihren Details. – brianpeiris