我正在使用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更新,但是在添加图像时所有其他网站都已正确完成......多么奇怪......
答案 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)