很感谢mark35的热心。在你给的代码基础上,我做了如下修改:
1、去掉[name^="ctl"],那个name是.net的ListBox自动生成的,还是不要依赖的好
2、与其在each循环里每次都做判断,不如先存储原来的索引,这样性能和代码可读性都有提高。
$('select').change(function () {
var index = this.selectedIndex;
$('select').each(function () {
this.selectedIndex = -1;
});
this.selectedIndex = index;
});
selectedIndex=-1,又学到了一点,感谢mark35的无私奉献!
mark35:
4、使用JS操作DOM的一个重要原则是:对于重复使用的对象尽量缓存。所以使用 var sel_elm = $('select'); 先把所有要操作的对象取出来赋值到一个变量,以后就全部对这个变量进行操作免除每次都要去搜索DOM树获得对象,可以带来很大的性能提升(当然总体提升并不明显,是百分率很高)。
7年前
回复
mark35:
3、并且每次事件都要重置所有【select】的selectedIndex值,这个是相当不合理的。应该判断触发的对象是否是上次相同的【select】对象,如果不是才需要去修改其他的对象。
7年前
回复
mark35:
2、请看楼上“改进版本,提高效率,且不区分jQuery版本”,这个性能更好。你这个修改版需要重复对$('select')进行获取而不是先取一次保存到一个变量以后直接对变量处理,这样会导致性能开销,【select】越多越浪费。
7年前
回复
mark35:
1、[name^="ctl"]这个是根据你代码中的信息为了避免与其他【select】冲突才加上的,你可以自己修正,比如根据class来判断。当然如果整个页面的所有【select】都是需要操作的那直接取'select'也行
7年前
回复