Javascript 使用jQuery创建扩展列表时遇到问题
我需要为我的客户的podcast归档页面创建一个列表,打开该页面可以显示他们所点击月份的不同podcast的链接。我非常希望页面右侧的默认博客存档小部件与BlogSpot完全相同: 我可以在这里制作这样的东西:但我不知道如何制作箭头来显示列表是否已展开。因此,它需要在单击时更改方向,并在再次单击时返回到上一个方向以关闭该部分 我的版本也有我打开页面时显示的子元素,我不希望它们在单击父元素之前展开 我已经在网上查看是否已经创建了jQuery来完成这项工作,或者我如何才能做到这一点,但由于我不确定这整件事的标题是否正确,我得到的结果好坏参半。任何帮助都将不胜感激 试试jqueryui ,或: 只需根据自己的喜好编写CSS 试试jqueryui ,或: 只需根据自己的喜好编写CSS 试试jqueryui ,或: 只需根据自己的喜好编写CSS 试试jqueryui ,或:Javascript 使用jQuery创建扩展列表时遇到问题,javascript,jquery,html,list,parent-child,Javascript,Jquery,Html,List,Parent Child,我需要为我的客户的podcast归档页面创建一个列表,打开该页面可以显示他们所点击月份的不同podcast的链接。我非常希望页面右侧的默认博客存档小部件与BlogSpot完全相同: 我可以在这里制作这样的东西:但我不知道如何制作箭头来显示列表是否已展开。因此,它需要在单击时更改方向,并在再次单击时返回到上一个方向以关闭该部分 我的版本也有我打开页面时显示的子元素,我不希望它们在单击父元素之前展开 我已经在网上查看是否已经创建了jQuery来完成这项工作,或者我如何才能做到这一点,但由于我不确定这
只需根据自己的喜好编写CSS 如果你想自己写(自己写东西很有趣): 我已将
#tree
的ID添加到根
,并将级别1的文本包装在中:
要在页面加载时隐藏所有子元素
$('#tree > li').addClass('closed');
// hide the level 2 ul's
$('#tree > li ul').hide();
然后在单击处理程序中:
$("#tree > li > span").click(function (event) {
event.preventDefault();
// swap the opened and closed classes
$(this).parent().toggleClass('opened closed');
// toggle the level 2 ul instead of li
$(this).parent().find("ul").toggle();
});
在此进行工作演示:
附加:
此演示代码没有使用缓存对jQuery对象的引用来简化阅读。在现实中,而不是做:
$(this).parent().toggleClass('opened closed');
$(this).parent().find("ul").toggle();
。。。我们应该:
var parent = $(this).parent(); // search the DOM once for this' parent, and remember it
parent.toggleClass('opened closed');
parent.find("ul").toggle();
。。因为每次使用jQuery的$()构造函数时,它都需要搜索整个DOM,如果您重复执行,这可能会非常昂贵。如果您想自己执行此操作(自己编写东西很有趣):
我已将#tree
的ID添加到根
,并将级别1的文本包装在中:
要在页面加载时隐藏所有子元素
$('#tree > li').addClass('closed');
// hide the level 2 ul's
$('#tree > li ul').hide();
然后在单击处理程序中:
$("#tree > li > span").click(function (event) {
event.preventDefault();
// swap the opened and closed classes
$(this).parent().toggleClass('opened closed');
// toggle the level 2 ul instead of li
$(this).parent().find("ul").toggle();
});
在此进行工作演示:
附加:
此演示代码没有使用缓存对jQuery对象的引用来简化阅读。在现实中,而不是做:
$(this).parent().toggleClass('opened closed');
$(this).parent().find("ul").toggle();
。。。我们应该:
var parent = $(this).parent(); // search the DOM once for this' parent, and remember it
parent.toggleClass('opened closed');
parent.find("ul").toggle();
。。因为每次使用jQuery的$()构造函数时,它都需要搜索整个DOM,如果您重复执行,这可能会非常昂贵。如果您想自己执行此操作(自己编写东西很有趣):
我已将#tree
的ID添加到根
,并将级别1的文本包装在中:
要在页面加载时隐藏所有子元素
$('#tree > li').addClass('closed');
// hide the level 2 ul's
$('#tree > li ul').hide();
然后在单击处理程序中:
$("#tree > li > span").click(function (event) {
event.preventDefault();
// swap the opened and closed classes
$(this).parent().toggleClass('opened closed');
// toggle the level 2 ul instead of li
$(this).parent().find("ul").toggle();
});
在此进行工作演示:
附加:
此演示代码没有使用缓存对jQuery对象的引用来简化阅读。在现实中,而不是做:
$(this).parent().toggleClass('opened closed');
$(this).parent().find("ul").toggle();
。。。我们应该:
var parent = $(this).parent(); // search the DOM once for this' parent, and remember it
parent.toggleClass('opened closed');
parent.find("ul").toggle();
。。因为每次使用jQuery的$()构造函数时,它都需要搜索整个DOM,如果您重复执行,这可能会非常昂贵。如果您想自己执行此操作(自己编写东西很有趣):
我已将#tree
的ID添加到根
,并将级别1的文本包装在中:
要在页面加载时隐藏所有子元素
$('#tree > li').addClass('closed');
// hide the level 2 ul's
$('#tree > li ul').hide();
然后在单击处理程序中:
$("#tree > li > span").click(function (event) {
event.preventDefault();
// swap the opened and closed classes
$(this).parent().toggleClass('opened closed');
// toggle the level 2 ul instead of li
$(this).parent().find("ul").toggle();
});
在此进行工作演示:
附加:
此演示代码没有使用缓存对jQuery对象的引用来简化阅读。在现实中,而不是做:
$(this).parent().toggleClass('opened closed');
$(this).parent().find("ul").toggle();
。。。我们应该:
var parent = $(this).parent(); // search the DOM once for this' parent, and remember it
parent.toggleClass('opened closed');
parent.find("ul").toggle();
。。因为每次使用jQuery的$()构造函数时,它都需要搜索整个DOM,如果重复使用,可能会非常昂贵。您需要的是一个手风琴。使用jQuery创建手风琴菜单非常简单。网上有很多教程。你也可以看看插件。看看异步树演示。你要找的是手风琴。使用jQuery创建手风琴菜单非常简单。网上有很多教程。你也可以看看插件。看看异步树演示。你要找的是手风琴。使用jQuery创建手风琴菜单非常简单。网上有很多教程。你也可以看看插件。看看异步树演示。你要找的是手风琴。使用jQuery创建手风琴菜单非常简单。网上有很多教程。你也可以看看插件。查看异步树演示。我喜欢自己编写它的想法,但是当我尝试您的建议时,一切都消失了,因为.hide()也应用于父元素,我也无法显示箭头(我自己制作了箭头以供使用)更新的答案,请参阅fiddle for working demo。请随意修改CSS以更改外观,或者修改Javascript以适应更多嵌套层(如果需要)。我喜欢自己编写的想法,但当我尝试您的建议时,一切都消失了,因为.hide()也应用于父元素,我也无法显示箭头(我自己制作了箭头以供使用)更新的答案,请参阅小提琴工作演示。请随意修改CSS以更改外观,或者修改Javascript以适应更多嵌套层(如果需要)。我喜欢自己编写的想法,但当我尝试您的建议时,一切都消失了,因为.hide()也应用于父元素,我也无法显示箭头(我自己制作了箭头以供使用)更新答案,请参阅