我正在测试流沙脚本来过滤一些图像。
我用一些图片DEMO HERE实现了这个脚本。
正如你所看到的,有不同颜色的圆形,五边形和三角形。
对于这个内联脚本,过滤器工作得很好:
<script type="text/javascript" charset="utf-8">
(function($) {
$.fn.sorted = function(customOptions) {
var options = {
reversed: false,
by: function(a) {
return a.text();
}
};
$.extend(options, customOptions);
$data = $(this);
arr = $data.get();
arr.sort(function(a, b) {
var valA = options.by($(a));
var valB = options.by($(b));
if (options.reversed) {
return (valA < valB) ? 1 : (valA > valB) ? -1 : 0;
} else {
return (valA < valB) ? -1 : (valA > valB) ? 1 : 0;
}
});
return $(arr);
};
})(jQuery);
$(function() {
var read_button = function(class_names) {
var r = {
selected: false,
type: 0
};
for (var i=0; i < class_names.length; i++) {
if (class_names[i].indexOf('selected-') == 0) {
r.selected = true;
}
if (class_names[i].indexOf('segment-') == 0) {
r.segment = class_names[i].split('-')[1];
}
};
return r;
};
var determine_sort = function($buttons) {
var $selected = $buttons.parent().filter('[class*="selected-"]');
return $selected.find('a').attr('data-value');
};
var determine_kind = function($buttons) {
var $selected = $buttons.parent().filter('[class*="selected-"]');
return $selected.find('a').attr('data-value');
};
var $preferences = {
duration: 800,
easing: 'easeInOutQuad',
adjustHeight: false
};
var $list = $('#list');
var $data = $list.clone();
var $controls = $('ul.splitter ul');
$controls.each(function(i) {
var $control = $(this);
var $buttons = $control.find('a');
$buttons.bind('click', function(e) {
var $button = $(this);
var $button_container = $button.parent();
var button_properties = read_button($button_container.attr('class').split(' '));
var selected = button_properties.selected;
var button_segment = button_properties.segment;
if (!selected) {
$buttons.parent().removeClass('selected-0').removeClass('selected-1').removeClass('selected-2').removeClass('selected-3').removeClass('selected-4').removeClass('selected-5').removeClass('selected-6');
$button_container.addClass('selected-' + button_segment);
var sorting_type = determine_sort($controls.eq(1).find('a'));
var sorting_kind = determine_kind($controls.eq(0).find('a'));
if (sorting_kind == 'all') {
var $filtered_data = $data.find('li');
} else {
var $filtered_data = $data.find('li.' + sorting_kind);
}
if (sorting_type == 'size') {
var $sorted_data = $filtered_data.sorted({
by: function(v) {
return parseFloat($(v).find('span.colore').text());
}
});
} else {
var $sorted_data = $filtered_data.sorted({
by: function(v) {
return $(v).find('strong').text().toLowerCase();
}
});
}
$list.quicksand($sorted_data, $preferences);
}
e.preventDefault();
});
});
var high_performance = true;
var $performance_container = $('#performance-toggle');
var $original_html = $performance_container.html();
$performance_container.find('a').live('click', function(e) {
if (high_performance) {
$preferences.useScaling = false;
$performance_container.html('CSS3 scaling turned off. Try the demo again. <a href="#toggle">Reverse</a>.');
high_performance = false;
} else {
$preferences.useScaling = true;
$performance_container.html($original_html);
high_performance = true;
}
e.preventDefault();
});
});
</script>我还为lightbox效果添加了漂亮的照片脚本。
问题是,在我使用滤镜之后,漂亮的照片脚本停止工作。我知道这是由ajax重新加载内容引起的。
我需要“重新加载”漂亮的照片as explained also on the prettyphoto official forum
我试着用
function reloadPrettyPhoto() {
$(".pp_pic_holder").remove();
$(".pp_overlay").remove();
$(".ppt").remove();
$("a[rel^='prettyPhoto']").prettyPhoto();
}然后我在112行周围调用函数,在
$list.quicksand($sorted_data, $preferences);
}
// Try to reload prettyphoto
reloadPrettyPhoto();
e.preventDefault();
});无结果的...naturally :(
我还尝试了:
jQuery.ajaxStop(function(){
$("a[rel^='prettyPhoto']").prettyPhoto();
});但是什么都没有。
我无法理解如何在我的脚本上使用
jQuery.ajaxStop(function(){
// Code to be run.
});也是一个论坛用户推荐的
提前向Tnx寻求您的帮助!
发布于 2011-04-14 07:21:58
一旦执行了流沙,你确实需要重新初始化prettyPhoto。
我拿你的例子页面修改了这一行:
$list.quicksand($sorted_data, $preferences);变成:
$list.quicksand($sorted_data, $preferences, function(){ $("a[rel^='prettyPhoto']").prettyPhoto(); });这样,每次过滤内容时,prettyPhoto都会被刷新。
你可以在这里看到它的工作原理:http://no-margin-for-errors.com/demos/quicksand/quicktest.html
谢谢
发布于 2011-03-17 22:10:46
您是否尝试过在Quicksand回调中调用prettyPhoto?
以下是Quicksand网站的示例:
$('#source').quicksand( $('#destination li'), {
name: value
}, function() {
// callback code
});我在www.lovecreativity.co.uk上使用Quicksand和做其他事情有一些很好的经验-看看这是否对你有帮助?
祝好运
发布于 2012-12-27 02:36:36
就像斯卡隆说的,你应该试着替换
$list.quicksand($sorted_data, $preferences);使用
$list.quicksand($sorted_data, $preferences, function(){ $("a[rel^='prettyPhoto']").prettyPhoto(); });在您的代码中,检查您的rel属性是否显示为"prettyPhoto",而不是“漂亮的照片”,并使用大写P,也许就是这样?
https://stackoverflow.com/questions/5197776
复制相似问题