我正在开发一个Wordpress主题,它使用自制的jQuery手风琴进行导航:
// jQuery Footer Navigation Slide
jQuery('#footer-accordion > li > a').on('click', function(e){
if(jQuery(this).parent().has('ul')) {
e.preventDefault();
if(!jQuery(this).hasClass('open')) {
jQuery('#footer-accordion li ul').slideUp(350);
jQuery('ul li a').removeClass('open');
jQuery(this).next('ul').slideDown(350);
jQuery(this).addClass('open');
} else if(jQuery(this).hasClass('open')) {
jQuery(this).removeClass('open');
jQuery(this).next('ul').slideUp(350);
}
}
});
当我用裸HTML构建它时,这工作得很好,但我现在无法将它集成到我的Wordpress主题中。似乎我所在的e.preventDefault()
也阻止了内部没有ul li a
的菜单项(ul
)的默认值(跟随链接)。我认为我的选择器很好,因为它在我的HTML中工作。
简而言之:如果我点击ul li a
没有嵌套li
的{{1}},我希望会定向到某个网页。但是,当我这样做时没有任何反应。 ul
函数工作正常,我可以单击嵌套.slideUp()
中的链接。我的选择者错了吗?我给ul
函数提供了错误的变量吗?
这是wp_nav_menu()
:
footer.php
这就是Wordpress对此的看法:http://jsfiddle.net/vKmfu/
答案 0 :(得分:1)
jQuery(this).parent().has('ul')
部分是罪魁祸首。与大多数jQuery函数一样,此调用始终返回jQuery对象。在booelan上下文中使用JavaScript对象时,除非true
,否则将其评估为null
。您需要的是if(jQuery(this).parent().has('ul').length > 0) { ... }
顺便说一下,选择器'#footer-accordion > li > a'
不会影响第二级或更多级别的链接。 >
是children
选择器。您可能需要descendant
选择器。