`
geeksun
  • 浏览: 954128 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

并列三级联动菜单

阅读更多

       近日在项目中用到了三级联动菜单,而且是并列的,就是在点击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 秒执行,也是一个美中不足的地方,呵呵,各位如果有更好的方法,可以拿出来共享一下。

分享到:
评论
2 楼 geeksun 2008-12-31  
sd6052083  你的菜单级联时的要求跟我的不一样  以后多多探讨ajax的问题
1 楼 sd6052083 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的字符串就行了!


相关推荐

Global site tag (gtag.js) - Google Analytics