【问题标题】:Jquery callback script executes but does not workJquery 回调脚本执行但不起作用
【发布时间】:2011-01-26 03:28:14
【问题描述】:

我从堆栈溢出中获得了很多帮助,让这个页面到达了它的功能所在的位置,它几乎就在那里,我只是不是 jQuery 专家。工作示例:

http://www.metropoliscreative.com/jake_test/test1.html

我正在使用 Galleriffic(一个动态图库 jQuery 插件)和 Quicksand(一个 jQuery 过滤插件)。

如果您单击缩略图,它们将在大窗格中正确加载。如果您选择项目类型或行业,它将根据某些数据类型对这些缩略图进行排序。

但是,问题在于,一旦您对它们进行排序,Galleriffic 功能就会停止工作。所以为了纠正这个问题,我在流沙初始化中包裹了另一个画廊调用。所以一旦流沙完成,它会重置galleriffic。

但是,此时我从 Galleriffic 收到了一个错误,我不知道为什么。我调用的方式与页面加载时调用的方式完全相同。

【问题讨论】:

    标签: javascript jquery quicksand


    【解决方案1】:

    当我查看您网页的源代码时,我在第 295 行(就在问题区域之前)看到了一个不应该存在的“d”。也许这就是原因,你的代码没有被执行。

    【讨论】:

    • 此时你比我更有耐心。我读到一半就放弃阅读了。
    • 这不是问题。该错误与第二次.galleriffic() 调用有关。
    • 因为那个 'd' .galleriffic() 没有被执行。他们称之为语法错误。
    • 感谢您指出这一点,但这似乎不是问题。
    【解决方案2】:

    由于您的第二次.galleriffic() 调用,它似乎引发了错误。我得到的错误是Cannot convert 'imageData' to object。这似乎是因为当您切换到(例如)项目类型 -> 手册包时,gallerific 会尝试根据数据属性将当前图像 ID 设置为 0。然而,似乎quicksand 搞砸了数据数组,导致gallerific 在第二次调用时看不到任何元素(也就是图像)。我认为quicksand 导致了问题,可能是因为它没有正确删除/添加图像。如果你看this的例子,删除图片的代码是这样的:

    $('#removeImageByIndexLink').click(function(e) {
        if (!gallery.removeImageByIndex(5))
            alert('There is no longer an image at position 5 to remove!');
    
        e.preventDefault();
    });
    

    然而,quicksand 似乎只是使用.remove() 来删除图像。现在,我查看了removeImageByIndex() 的代码,似乎gallerific 保留了有关它使用的图像的信息缓存,当.remove()quicksand 调用时,这些信息不会更新。

    tldr;流沙错误地删除了图像,gallerific 没有更新到更改。

    如何解决?好吧,一种选择是尝试重写流沙脚本的删除和添加部分,以了解 Gallerific。另一种方法是将流沙的删除部分重写为仅隐藏元素而不是删除它们(即设置display:none; 而不是.remove())。

    我希望这会有所帮助,这就是我能想到的。

    【讨论】:

    • Drackir,非常感谢您的回复。我想我在听你说的话,我相信这是有道理的。我在流沙 js 源代码中,我看到两行有一个删除行(第 80 行和第 300 行)。我不太确定如何开始重写它。你能提供什么建议吗?我试过 $dest.css('display':'none');但它给了我一个错误......巧合的是,当我完全删除这一行时,它不再给我一个错误,而且看起来 Galleriffic 在那一点上并没有完全消失。有什么想法吗?
    • @Redlist:在第 80 行尝试 $toDelete.css('display','none');,同样在第 300 行使用 $dest 变量(注意我使用的语法有点不同)。不要忘记,您必须找到它添加元素的位置并将它们更改为.css('display',''); 以重置它们。我只是简单地浏览了流沙代码。试着理解它是如何工作的:比如它把旧元素放在哪里(它必须将它们存储在某个地方)然后修改它以便它不会保存/删除/读取它们,它只是隐藏/显示它们。
    • 谢谢 Drackir,非常感谢您的帮助。打算试试这个。
    • @Redlist:祝你好运!如果您需要更多帮助,请发表评论。
    猜你喜欢
    • 2016-10-03
    • 2014-04-03
    • 1970-01-01
    • 2011-03-29
    • 1970-01-01
    • 2016-01-10
    • 2022-12-08
    • 1970-01-01
    • 2011-01-21
    相关资源
    最近更新 更多