【问题标题】:Loading data from Google Spreadsheet has broken isotope jQuery从谷歌电子表格加载数据破坏了同位素 jQuery
【发布时间】:2015-06-25 17:43:19
【问题描述】:

不久前,我使用同位素制作了这个人的网格。如您所见,每个都有翻转效果。

http://thetally.efinancialnews.com/tallyassets/FinTech/index.html

我现在想再次做同样的事情,但从谷歌电子表格中输入数据,我已经成功实现了......

http://thetally.efinancialnews.com/tallyassets/fintech-40-2015/index.html

...但是,现在 jQuery 都不起作用,但我没有看到任何错误消息。所需的基本代码似乎是相同的。

我是否在调用代码段的顺序上出错了?我看不出它有什么问题。我错过了从谷歌提供代码的其他限制吗?

任何想法都非常感谢

..要添加的另一件事似乎很奇怪,其中包含所有同位素项目的#content div 的高度为 0。我必须添加重要信息! css 让盒子完全显示出来。奇怪

【问题讨论】:

  • 您需要做的第一件事是从 v 1.6.1 更新您的 jQuery 并从 v 1.4 更新同位素。 Isotope 现在是 v2.2,但如果您仍想使用 v1,它是 1.5.2。你的 jQuery 很老了。一旦您这样做了,就可以更轻松地帮助您解决问题。
  • 谢谢,确实如此,虽然工作版本使用完全相同的版本并且似乎没问题
  • 是的,你似乎没有从谷歌电子表格中加载 json 数据。
  • 正确。这就是区别。我已经尝试添加更新的 jquery 和同位素,但我已经完全破坏了它。知道哪个 2 应该兼容而无需更改我的 jQuery 代码吗?

标签: jquery google-sheets jquery-isotope masonry


【解决方案1】:

这是一个有效的jsfiddle。 这是使用 jQuery 1.11 和 isotope v2。由于这个版本的 isotope 不使用 v1.5 CSS 过渡,因此它们已从您的 css 中删除,并且 animationOptions 已删除。由于您正在加载 json 数据,因此您需要使用同位素附加方法。顺便说一句,我注意到您的过滤器不起作用,因为它们区分大小写。所以过滤“london”除了“London”将过滤项目之外什么都不做。我更改了一些以使其正常工作。

查看下面的相关代码。

 $(document).ready(function () {
 var $container = $('#content');
     var selector = $(this).attr('data-filter');
    $container.isotope({
        itemSelector: '.box',
         filter: '*'              
    });

    $('.filter li a').on( 'click', function() {
        var selector = $(this).attr('data-filter');
        $container.isotope({
            filter: selector
        });
        return false;
    });  


  $(function listBooks() {
       $.getJSON("https://spreadsheets.google.com/feeds/list/1ZHXE5lqr3WspVtnOpWaBUCBFxpxK_DFXoNMcVBAsiZI/od6/public/values?alt=json-in-script&callback=?",

    function (data) {

        $.each(data.feed.entry, function (i, entry) {

            var boxNo = i + 1;

            var item = '<div class="box ' + entry.gsx$sector.$t + ' ' + entry.gsx$location.$t + ' ' + 'box' + boxNo + '">';

            item += '<div class="box-all"><h2 class="box-title">' + entry.gsx$name.$t + ' ' + entry.gsx$surname.$t + '</h2><div class="box-text">' + entry.gsx$title.$t + '</div></div>';

            item += '</div>';
var $items = $('<a>' + item + '</a>');
$container.append($items).isotope( 'appended', $items );
$container.isotope('layout');            
        });

    });

 });

【讨论】:

  • 非常感谢。我更新了我的,但由于某种原因,页面在点击时重新加载。也许我需要对“return false”部分进行排序。此外,我添加的 jQuery 的底部也没有做太多。也许我没有链接正确的...thetally.efinancialnews.com/tallyassets/fintech-40-2015/…
  • 我稍微修改了你的过滤链接。尝试将“过滤器”类添加到 ul。 &lt;div class="nav first"&gt; &lt;ul class="filter"&gt;
  • 我在函数 listBooks 内的正确位置使用悬停代码更新了 jsfiddle,所以它现在可以工作了
  • 非常感谢。我能问一下为什么悬停代码需要在该函数内吗?我认为“document.ready”函数中的任何地方都会在悬停时触发该动画。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-28
  • 1970-01-01
  • 2013-10-05
  • 2014-05-17
  • 1970-01-01
相关资源
最近更新 更多