livequery не работает с группами
Я использую несколько хороших плагинов из 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>
Заранее спасибо!
ОБНОВИТЬ
Я нашел свою проблему в коде Slimbox, потому что он использует this
быть его ссылками. Поэтому каждый раз, когда запускается livequery, this
перезаписывается и должен фактически содержать полный селектор. Maybe I can solve this by just saying:
$('a[rel^="lightbox"]').livequery(function()
{
$('a[rel^="lightbox"]').slimbox(null, function(el) // link mapper
...
Но выполнение этого заставило бы часто запускать livequery в сторону slimbox, что было нежелательным поведением. Есть ли лучший способ сделать так, чтобы он не стрелял так часто?
UPDATE2
Что касается других вопросов на страницах биографии. Обновления LiveQuery об удалении изображения, но все другие сайты сделаны правильно при добавлении изображений... Как странно...
1 ответ
Я действительно нашел решение, но это довольно странно. Если кто-то прочитает это и сможет мне это объяснить, было бы неплохо. Каким-то образом livequery делает разницу в моем коде между пустыми <head>
теги и заполненные. Итак, когда у меня есть <style>
тег внутри моей подстраницы (например, BIO или DISCO), даже если она пуста, livequery работает. Если у меня есть пустой <head>
тэг, livequery работает только при выходе из страницы. Что было странно. Теперь я просто создал пустой <style>
тег и каждая страница работает нормально.
Что касается проблемы групп, я сделал свои livequery немного по-другому, поэтому livequery больше не вызывается. В моем HTML я уверен, что всегда есть <div class="content">
на каждой подстранице. Так что я мог бы сделать livequery, такие как:
$('.content').livequery(function()
{
$('a[rel^="lightbox"]').slimbox(null, function(el) // link mapper
...
Проблема с Slimbox в том, что он может просто взять полный селектор в качестве своей области. Таким образом, изменение slimbox на другой селектор, отключит старый. В своем коде он делает что-то вроде этого:
var links = this; // where this is the $(selector)