Javascript 由于CMS输出导致JQuery手风琴问题
我有一个问题,因为我的CMS我使用的方式输出导航项目。我以前问过这个问题,并收到了一个解决方案,但由于JS不是我的强项,我不明白。简短的背景。My CMS输出一个菜单项,如:Javascript 由于CMS输出导致JQuery手风琴问题,javascript,jquery,ajax,content-management-system,accordion,Javascript,Jquery,Ajax,Content Management System,Accordion,我有一个问题,因为我的CMS我使用的方式输出导航项目。我以前问过这个问题,并收到了一个解决方案,但由于JS不是我的强项,我不明白。简短的背景。My CMS输出一个菜单项,如: <ul id="amenu"> <li><a href="#">Home</a></li><li><span class="currentbranch0"> <a href="">Content</
<ul id="amenu">
<li><a href="#">Home</a></li><li><span class="currentbranch0">
<a href="">Content</a></span>
<ul class="multilevel-linkul-0" title="">
<li><a href="">Content 2</a></li>
<li><span class="currentbranch1"><a href="">Content 3</a></span></li>
</ul>
</li>
</ul>
但它不能像手风琴一样工作,请看这里的JSFIDLE:。我想我很快就能让它工作了,但由于我的JS技能充其量是基本的,我似乎无法控制它。我基本上需要菜单来展开(如果选择了第二级项目)并使用CMS输出的导航项目突出显示活动对象currentbranch1
谢谢!:)
尼克
编辑:只是要补充一点,手风琴不工作的主要问题是,即使对于第二级,CMS也会输出第一级,导致代码失败
<span class="currentbranch0"></span>
在这里拉小提琴
此外,我如何让小提琴自动打开帐户是链接被选中,第一级lis将实际链接到网络内容,而不是dummys
干杯您正在选择li element的第一个子元素锚定链接
$('#amenu > li > a')
但是在HTML中,锚定链接是第二个子项
<li><span class="currentbranch1"><a href="">Content 3</a></span></li>
此外,活动类不能通过您的方法进行检查,但您可以通过hasClass函数进行检查
看看这把小提琴是否适合你
您正在选择锚定链接,它是li元素的第一个子元素
$('#amenu > li > a')
但是在HTML中,锚定链接是第二个子项
<li><span class="currentbranch1"><a href="">Content 3</a></span></li>
此外,活动类不能通过您的方法进行检查,但您可以通过hasClass函数进行检查
看看这把小提琴是否适合你
您是否期望以下结果。请查看下面的链接 只有js代码被更改
$(document).ready(function () {
$('#amenu > li > a,#amenu > li > span > a').click(function(){
//alert($(this).closest("span[class*='currentbranch']").attr('class'));
if ($(this).closest("span[class*='currentbranch']").attr('class') != 'active'){
$('#amenu li ul').slideUp();
$(this).parents('li').children('ul').slideDown();
$('#amenu li a').closest("span[class*='currentbranch']").removeClass('active');
$(this).closest("span[class*='currentbranch']").addClass('active');
}
});
});
您是否期望以下结果。请查看下面的链接 只有js代码被更改
$(document).ready(function () {
$('#amenu > li > a,#amenu > li > span > a').click(function(){
//alert($(this).closest("span[class*='currentbranch']").attr('class'));
if ($(this).closest("span[class*='currentbranch']").attr('class') != 'active'){
$('#amenu li ul').slideUp();
$(this).parents('li').children('ul').slideDown();
$('#amenu li a').closest("span[class*='currentbranch']").removeClass('active');
$(this).closest("span[class*='currentbranch']").addClass('active');
}
});
});
用这个
$('.currentbranch0').on('click', function(){
$(this).next().slideToggle('slow');
});
看这个用这个
$('.currentbranch0').on('click', function(){
$(this).next().slideToggle('slow');
});
看看这个我想我们现在有进展了:)。当前Branch0类激活后,如何使手风琴展开?上面的代码在CMS上不起作用(手风琴在按下后直接向上滑动)。我想这是因为CMS激活了span?即使对currentbranch0分支的开头进行硬编码,如果选择它,也会很好:)我使用.click()这一事实会成为我的问题吗?我需要在加载时打开活动页面,事实上它不会在单击时打开,因为单击会将用户发送到另一个页面,在那里它应该打开我认为您应该添加您的内容基于cms的JSFIDLE。很难从上面的评论中分析你想要什么。干杯,用户,我在这里澄清了我的新帖子中的一些要点:)我想我们现在有进展了:)。当前Branch0类激活后,如何使手风琴展开?上面的代码在CMS上不起作用(手风琴在按下后直接向上滑动)。我想这是因为CMS激活了span?即使对currentbranch0分支的开头进行硬编码,如果选择它,也会很好:)我使用.click()这一事实会成为我的问题吗?我需要在加载时打开活动页面,事实上它不会在单击时打开,因为单击会将用户发送到另一个页面,在那里它应该打开我认为您应该添加您的内容基于cms的JSFIDLE。很难从上面的评论中分析你想要什么。为用户干杯,我在这里澄清了我的新帖子中的一些要点:)