jQuery masonry 插件 Inside an Accodion,一个复杂的集成
jQuery masonry plugin Inside an Accodion, a complex integration
很难解决这个问题,也很难解释这个场景,所以我附上一张图片,解释我想要实现的目标。见下图
现在,我使用自定义代码来调用面板,一个简单的 jquery 脚本,类似这样
$('.widgets_area').find('.widget_title').on('click', function(e){
e.preventDefault();
$(this).next().slideToggle('fast')
}
面板打开后,我想将面板内的项目作为 jquery.masonry 插件项目,因为当有人点击项目时,它会向下扩展并显示一些描述,也想安排在顺序,如下图所示。
所以我在这里准备了一个fiddle,到目前为止我已经取得了一些成就,但现在我的脚本可以显示面板,以及这些面板中的砌体项目,但仅对于第一个面板,砌体项目上的扩展效果很好,认为存在一些绑定问题,但我无法解决问题,我们将不胜感激。
这是 Fiddle,完整 html、css 和 js,请检查此以了解我要解释的问题。
fiddle: Masnory+Accordion
试试这个:
$('.widgets_area').find('.widget_title').on('click', function (e) {
e.preventDefault();
$(this).next().slideToggle('fast', function () {
var $this = $(this);
$this.prev().addClass('wd_act');
$this.parent().addClass('wd_open');
var $grid2 = $($this).children().first().masonry({
columnWidth: 0,
itemSelector: '.grid-item'
});
$grid2.on('click', '.widget_bx', function () {
//alert('dsaf');
$(this).next('.wd_info').toggle();
$(this).parent('.grid-item').toggleClass('is-expanded');
$grid2.masonry();
});
});
//Hide the other panels
$(".wd_list_wrap").not($(this).next()).slideUp('fast');
$(".wd_list_wrap").not($(this).next()).prev('.widget_title').removeClass('wd_act');
$(".wd_list_wrap").not($(this).next()).parent().removeClass('wd_open');
});
我认为这可能对你有用我只用这样的动态元素替换静态元素:
静态:
var $grid2 = $('.grid2')
动态:
var $grid2 = $($this).children().first()
注意:现在您不需要为每个元素放置单独的脚本。
Fiddle: jsfiddle
很难解决这个问题,也很难解释这个场景,所以我附上一张图片,解释我想要实现的目标。见下图
现在,我使用自定义代码来调用面板,一个简单的 jquery 脚本,类似这样
$('.widgets_area').find('.widget_title').on('click', function(e){
e.preventDefault();
$(this).next().slideToggle('fast')
}
面板打开后,我想将面板内的项目作为 jquery.masonry 插件项目,因为当有人点击项目时,它会向下扩展并显示一些描述,也想安排在顺序,如下图所示。
所以我在这里准备了一个fiddle,到目前为止我已经取得了一些成就,但现在我的脚本可以显示面板,以及这些面板中的砌体项目,但仅对于第一个面板,砌体项目上的扩展效果很好,认为存在一些绑定问题,但我无法解决问题,我们将不胜感激。
这是 Fiddle,完整 html、css 和 js,请检查此以了解我要解释的问题。
fiddle: Masnory+Accordion
试试这个:
$('.widgets_area').find('.widget_title').on('click', function (e) {
e.preventDefault();
$(this).next().slideToggle('fast', function () {
var $this = $(this);
$this.prev().addClass('wd_act');
$this.parent().addClass('wd_open');
var $grid2 = $($this).children().first().masonry({
columnWidth: 0,
itemSelector: '.grid-item'
});
$grid2.on('click', '.widget_bx', function () {
//alert('dsaf');
$(this).next('.wd_info').toggle();
$(this).parent('.grid-item').toggleClass('is-expanded');
$grid2.masonry();
});
});
//Hide the other panels
$(".wd_list_wrap").not($(this).next()).slideUp('fast');
$(".wd_list_wrap").not($(this).next()).prev('.widget_title').removeClass('wd_act');
$(".wd_list_wrap").not($(this).next()).parent().removeClass('wd_open');
});
我认为这可能对你有用我只用这样的动态元素替换静态元素:
静态:
var $grid2 = $('.grid2')
动态:
var $grid2 = $($this).children().first()
注意:现在您不需要为每个元素放置单独的脚本。
Fiddle: jsfiddle