2015-06-28 15 views
-1

我是真正的新的JS,我做的是创造一个动态菜单的excersise,这是很简单的,其实是这个确切的菜单:如何使用生成的HTML(使用JS)与另一个JS脚本?

http://thecodeplayer.com/walkthrough/vertical-accordion-menu-using-jquery-css3

的事情是,如果我使用这个确切代码一切工作正常,但如果我拿出<div id="accordian">部分,并用生成它的JS代替(以后生成动态菜单),它会停止工作,一切都会显示(甚至是子菜单),但不能滑动他们支持。我从来没有做过这样的事情,你有什么建议吗?

+0

你确定你的代码?不知道自己在做什么,很难说出自己做错了什么。 –

回答

0

jsBin demo

(请不要使用 “accordi 一个 N” ......这简直UFF nghhh :)
所以手风琴在演示中使用的ID accordion like in

<div id="accordion"> 

只是不要使用ID! - 使用课程!

<div class="accordion"><!-- menu here bla bla --></div> 

和比jQuery中:

/*jQuery time*/ 
$(document).ready(function(){ 

    // $(".accordion h3").click(function(){ NO! use dynamic click delegation 
    $(document).on("click", ".accordion h3", function(){ 
     //slide up all the link lists 
     // $("#accordian ul ul").slideUp(); Wrong. Reference to this! 
     $(this).closest(".accordion").find("ul ul").slideUp(); 
     //slide down the link list below the h3 clicked - only if its closed 
     if(!$(this).next().is(":visible")) { 
      $(this).next().slideDown(); 
     } 
    }); 

}); 

上面的代码也会工作为动态生成的手风琴原因,我们使用了.on()方法,将委托点击事件到现有的,但也对未来元件。

+0

嗨谢谢你的答案,但是我试过这个在我的代码,但没有工作,IDK,如果它是我生成德HTML的方式,我一直在看它,似乎工作正常。 它会生成元素列表,因为它会一直显示所有元素,而不是等待点击以显示或隐藏它们 –

+0

@RodolfoJoséMiquilarena你见过我的jsBin示例吗?你是否已将所有'#accordian'重命名为CSS中的'.accordion'(CLASS !!)?你是否修正了错字'手风琴'手风琴'?所以,你可以看到代码工作得很好。 –