livequery не работает с группами - PullRequest
0 голосов
/ 07 января 2011

Я использую несколько хороших плагинов из jQuery для использования сайтов на основе AJAX. Теперь я столкнулся с проблемой, что я хотел бы использовать livequery для определения моего Slimbox. Проблема в том, что он не получает мои группы, как указано в функции linkFiler.

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

Что не так? На одной из моих страниц (Биография) slimbox работает только при обновлении страницы на этом сайте, но не при нажатии на мои страницы. Группы не работают в разделе Дискография сайта.

Части биографических и дискографических изображений следующие:

<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>

Заранее спасибо!

UPDATE

Я нашел мою проблему в коде slimbox, потому что он использует this в качестве ссылок. Таким образом, каждый раз, когда запускается livequery, this перезаписывается и должен фактически содержать полный селектор. Может быть, я могу решить это, просто сказав:

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

Но это может привести к тому, что livequery будет много раз запускать слимбокс, что является нежелательным поведением. Есть ли лучший способ заставить его не так часто стрелять?

UPDATE2

Что касается других вопросов на страницах биографии. Обновления LiveQuery об удалении изображения, но все другие сайты сделаны правильно при добавлении изображений ... Как странно ...

1 Ответ

1 голос
/ 09 января 2011

Я действительно нашел решение, но это довольно странно.Если кто-то прочитает это и сможет мне это объяснить, было бы неплохо.Так или иначе, livequery делает разницу в моем коде между пустыми тегами <head> и заполненными.Поэтому, когда у меня есть тег <style> внутри моей подстраницы (например, BIO или DISCO), даже если он пуст, livequery работает.Если у меня есть пустой тег <head>, livequery работает только при выходе из страницы.Что было странно.Теперь я только что создал пустой тег <style>, и каждая страница работает нормально.

Что касается проблемы групп, я сделал свой livequery немного по-другому, поэтому livequery больше не вызывается.В моем HTML я уверен, что на каждой подстранице всегда есть <div class="content">.Таким образом, я мог бы сделать живой запрос, такой как:

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

Проблема со слимбоксом заключается в том, что он может просто взять полный селектор в качестве своей области действия.Таким образом, изменение slimbox на другой селектор, отключит старый.В своем коде он делает что-то вроде этого:

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