livequery不与群组合作

时间:2011-01-07 19:35:31

标签: jquery jquery-plugins livequery slimbox

我正在使用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));
        });
    });
});

出了什么问题?在my pages(传记)之一中,slimbox仅在我刷新该网站上的页面时才有效,但在点击我的网页时则无效。这些小组不在网站的Discography部分工作。

生物和唱片的部分图片如下:

<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都会被覆盖,并且实际上应该包含完整的选择器。也许我可以通过这样说来解决这个问题:

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

但这样做会使livequery在很多时候对于slimbox大火,这不是通缉行为。是否有更好的方法让它不经常发火?

UPDATE2

至于传记页面中的其他问题。关于删除图像的livequery更新,但是在添加图像时所有其他网站都已正确完成......多么奇怪......

1 个答案:

答案 0 :(得分:1)

我实际上找到了解决方案,但这很奇怪。如果有人读到这个并且可以向我解释,那就太好了。不知何故,livequery使我的代码在空<head>标记和填充标记之间产生差异。因此,当我的子页面中有<style>标签(例如BIO或DISCO)时,即使它是空的,实时查询也可以。如果我有一个空的<head>标记,则实时查询仅适用于离开页面。这很奇怪。现在我刚刚创建了一个空的<style>标记,每个页面都可以正常工作。

至于群体问题,我的livequery有点不同,所以livequery不再被调用了。在我的HTML中,我确信每个子页面中始终有<div class="content">。所以我可以做一个实时查询,例如:

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

slimbox的问题在于它可以将完整选择器作为其范围。因此,将slimbox更改为不同的选择器将禁用旧选择器。 在它的代码中,它做了类似这样的事情:

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