2011-01-07 9 views
0

Ich benutze einige nette Plugins von jQuery für die Verwendung von AJAX-basierten Websites. Jetzt bin ich auf das Problem gestoßen, dass ich gerne livequery zum Angeben meiner Slimbox verwenden möchte. Das Problem ist, dass es meine Gruppen nicht wie in der LinkFiler-Funktion angegeben bekommt.Live-Abfrage funktioniert nicht mit Gruppen

$(document).ready(function() 
{ 
    $('a[rel^="lightbox"]').livequery(function() 
    { 
     $(this).slimbox(null, function(el) // link mapper 
     { 
      return [el.href, el.title + '<br/><a href=\"' + el.href + '\">Download</a>']; 
     } 
     , function(el) // links filter 
     { 
      return (this == el) || ((this.rel.length > 8) && (this.rel == el.rel)); 
     }); 
    }); 
}); 

Was läuft falsch? In einem der my pages (Biographie) funktioniert die Slimbox nur, wenn ich die Seite auf dieser Website aktualisieren, aber nicht beim Klicken durch meine Seiten. Die Gruppen arbeiten nicht im Diskografiebereich der Site.

Teile der Bio- und Diskografie Bilder sind wie folgt:

<a href="albumCover.jpg" rel="lightbox-disco"><img src="albumCover_thumb.jpg" alt=""></a> 

<a rel="lightbox" href="bandPic.png"><img style="float:right;margin-left:1em;" src="bandPic_thumb.png" alt=""></a> 

Vielen Dank im Voraus!

UPDATE

ich mein Problem im slimbox Code gefunden, weil es die this nutzt seine Verbindungen zu sein. Jedes Mal, wenn eine Live-Abfrage ausgelöst wird, wird this überschrieben und sollte den vollständigen Selektor enthalten. Vielleicht kann ich dieses Problem lösen, indem nur zu sagen:

$('a[rel^="lightbox"]').livequery(function() 
{ 
    $('a[rel^="lightbox"]').slimbox(null, function(el) // link mapper 
... 

Aber das tun würde livequery Feuer eine Menge Zeit in Richtung slimbox machen, was nicht Verhalten gesucht. Gibt es einen schöneren Weg, es nicht so oft zu feuern?

UPDATE2

Wie bei den anderen questio in den Biografie-Seiten. LiveQuery Updates zum Entfernen des Bildes, aber alle anderen Websites sind ordnungsgemäß beim Hinzufügen der Bilder ... Wie seltsam ...

Antwort

1

Ich habe tatsächlich die Lösung gefunden, aber es ist ziemlich seltsam. Wenn jemand das liest und mir das erklären kann, wäre es nett. Irgendwie, Live-Abfrage macht einen Unterschied in meinem Code zwischen leeren Tags und gefüllt. Also, wenn ich ein <style> Tag in meiner Unterseite (wie BIO oder DISCO) habe, auch wenn es leer ist, funktioniert die Live-Abfrage. Wenn ich ein leeres -Tag habe, funktioniert die Live-Abfrage nur beim Verlassen der Seite. Was war seltsam. Jetzt habe ich einfach ein leeres <style> Tag erstellt und jede Seite funktioniert einwandfrei.

Was das Gruppenproblem betrifft, habe ich meine Live-Abfrage ein bisschen anders gemacht, so dass die Live-Abfrage nicht mehr so ​​oft aufgerufen wird. In meinem HTML bin ich sicher, dass es immer eine <div class="content"> in jeder Unterseite gibt. So konnte ich eine livequery tun wie:

$('.content').livequery(function() 
{ 
    $('a[rel^="lightbox"]').slimbox(null, function(el) // link mapper 
... 

Das Problem mit slimbox ist, dass es nur den vollständigen Selektor als ihren Umfang übernehmen. Wenn Sie die Slimbox in einen anderen Selektor ändern, wird der alte deaktiviert. In seinem Code führt es in etwa so aus:

var links = this; // where this is the $(selector)