【问题标题】:Jquery: masonry('hide',element) method with a jquery elementJquery:带有 jquery 元素的 masonry('hide',element) 方法
【发布时间】:2013-06-16 07:24:26
【问题描述】:

所以,我正在使用 Masonry 在我的网站中制作“流动”布局,但现在我遇到了一个涉及其隐藏和显示方法的问题。

在一个事件中,我正在打这个电话:

$container.masonry('hide', $(this));

如您所见,我正在使用$(this) 告诉砌体通过 jquery 隐藏什么元素

但显然,这种方法不适用于 jquery 元素?

我的控制台中的错误消息如下所示:

Uncaught TypeError: Object #<HTMLElement> has no method 'hide' (masonry.pkgd.min.js:9)

我尝试查看documentation,但它所说的关于接受的类型是:

$container.masonry( 'hide', items )

items 类型:Array of Masonry.Items

Masonry.Item 应该是什么?以及如何将我的元素表示为一个?

【问题讨论】:

    标签: jquery jquery-masonry


    【解决方案1】:

    如果您阅读文档,您会发现itemselementsarray

    项目 Type: Array of Masonry.Items

    试试这个,

    var arr=new Array();
    arr.push($(this));
    $container.masonry('hide', arr); 
    

    【讨论】:

    • 谢谢!它完美地隐藏了我的项目......但是......我正在尝试使用它的对应物'masonry('reveal',arr)',但现在它返回错误“Uncaught TypeError:Object [object Object]没有方法'揭示' "
    • 我最终放弃了使用插件方法,现在我只使用 jquery 标准 .show() 和 .hide(),稍后调用 masonry('layout') 方法 -.-
    • 哇,谢谢@XuxuBelezA 我一直在寻找一个体面的解决方案来解决隐藏功能的古怪行为,你建议只使用 jquery hide and show 确实解决了我的问题并加快了我的一天!从技术上讲,这不是问题的答案,但我认为在这个主题上应该更明显!
    【解决方案2】:

    添加此功能

    // FIX para Masonry
    // goes through all children again and gets bricks in proper order
    Outlayer.prototype.publicItemize = function() {
      // collection of item elements
      return this._itemize( this.element.children );
    };
    

    现在你可以这样做了

    // Get correcto list in correct format
    var _list = container.masonry("publicItemize");
    // Actions on "_list"
    // hide elements
    container.masonry("hide", _list);
    

    【讨论】:

      猜你喜欢
      • 2013-09-30
      • 1970-01-01
      • 1970-01-01
      • 2015-05-11
      • 2012-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多