浏览 3711 次
锁定老帖子 主题:并列三级联动菜单
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-11-14
近日在项目中用到了三级联动菜单,而且是并列的,就是在点击A的时候,B和C会根据A的变化都发生相应的变化,用的是当A的值发生变化时,就是触发一个事件,页面用的是 js 的 onchange() 事件,然后使用 Ajax 向后台发送一个请求,同时把A的 id 传送过去,因为是并列三级联动,所以在 onchange() 触发的方法里,需要处理两个请求,就是让B和C的值都发生变化,这里我是采用调用两个方法执行的,我发现如果按平时的写法,第一个方法会不执行,就是B的值没有发生变化,光C的值变拉,这样达不到并列联动的目的,我想这可能是因为每个脚本触发的方法都要和后台的程序交互,后台又要访问数据库,运行需要一定的时间,如果两个方法按普通的写法: b(); c(); 这样的话,b()会来不及执行完就去执行 c() 啦,所以可能需要给 b() 一些时间让 b() 去执行完整个程序,我就使用了延时的方法: setTimeout(),让 c() 延时500毫秒执行,这样就可以让 b() 充分地运行完毕,当然,这样也有一些不足,就是在页面显示的时候,看C的变化会稍有一些延迟,因为毕竟比 b() 晚0.5 秒执行,也是一个美中不足的地方,呵呵,各位如果有更好的方法,可以拿出来共享一下。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-11-15
前天刚好做了一个三级联动菜单
原理:A,B,C(3列) A动:B,C跟着动 B动:C跟着动 那么: A动的时候,因为B,C都要跟着动,C的结果只是B的第一项的结果 OK,分析就是这些。 你的问题就是: 改变A的时候,B没动而C却动了 说明你传字符串的时候,出现了丢失的情况! 当A动的时候 传A的id,然后在B中查属于A的id的选项,C只是查B的第一个选项 在java类中分别将这些方法写出 方法返回值是字符串! 将B查到的字符串用分隔符分隔开来,C同理 这里就有2个大的字符串了,2个大的字符串在用另外一个分隔符分隔开来 OK,然后将字符串传到页面上 当触发A的点击事件时,就切割这个大的字符串! 然后A的触发事件中写处理这B和C的字符串就行了! |
|
返回顶楼 | |
发表时间:2008-12-31
sd6052083 你的菜单级联时的要求跟我的不一样 以后多多探讨ajax的问题
|
|
返回顶楼 | |