编辑:
全功能演示:
Huuuh :) 完成!
在网上搜索如何按字母顺序对 UL 进行排序。但没有结果。
这个怎么运作:
- 将所有存在的电影克隆到 FIRST 中
.slide
(现在您不必index -1
像以前那样使用任何魔法来获得正确.slide
的动作链接后)
- 创建了一个函数'sorty' :)
- 将所有电影名称抓取到每个父元素
li
的 jQuery中.data()
ul
- 现在网格
ul
包含电影名称。
ul
在第一个按字母顺序排序.slide
- 有用!
您可以看到我将您的一些代码从 jQuery 移动到 CSS(标有 // 添加!),然后我删除了if
对“全部”链接的检查。
在 HTML 中添加了一个.slide
包含“信息”
的属性 jQuery 现在将使用克隆的元素填充此幻灯片!
我使用 jQuery 选择器:gt()
获取所有下一个元素,但定义了一个
(这意味着例如:如果我们使用$('.element:gt(0)').css({color:'red'});
大于索引 '0' 的所有元素将有一个红色文本。只有第一个元素将具有默认颜色。)
如果您有任何问题,请......问吧!
现在在几行中,它看起来像:
$('.grid:gt(0)').find('ul:eq(0)').fadeOut(0); // hide titles (not from the first .grid (:eq(0)))
$('.grid:gt(0) ul:visible:not(:eq(0))').clone().appendTo( $('.grid:eq(0)') ); // after we hided all the titles - clone all UL elements to our first .slide
$('.slide:gt(0)').hide();
function sorty() { // sort UL elements by holding data (the data will be the movie name! )
$('.grid:eq(0) ul:gt(0)').each(function() {
var txt1 = $(this).children('li:eq(0)').text();
$(this).data('name', txt1);
});
var items = $('.grid:eq(0) ul');
items.sort(function(a, b) {
var charA = $(a).data('name');
var charB = $(b).data('name');
if (charA < charB) return -1;
if (charA > charB) return 1;
return 0;
});
var grid = $('.grid:eq(0)');
$(grid).append(items);
$('.grid:gt(0)').find('ul:eq(0)').show(); // redo visibility for infos.
}
sorty(); // run sorty!
$('ul.nav li').click(function() {
$(this).addClass('btnSelect').siblings().removeClass('btnSelect');
var i = $(this).index();
$('.slide:visible').fadeOut(400, function() {
$('.slide:eq(' + i + ')').fadeIn(400);
});
});