由于不知道作者是如何设计的,不值得dwz框架如何得到选定行的某列的值,看示例还得设这什么row,rel属性,不如改进一下,方便自己使用。
需要解决3个问题:
1、前台页面table自定义事件处理函数问题
2、前台页面自定义函数接收dwz框架传递过来的参数(实际上是tr的click事件,但是是在dwz框架里)
3、如果一个页面有两个table,他们之间相互影响吗? (这个问题实际上现在就可以回答,但是还是用例子验证一下比较好。经过验证,两个table不会冲突,因为想一下jquery的原理,他是对每个table进行了事件绑定,所以影响不会超出他绑定的table。这个对于理解dwz那复杂的jquery的$代码还是有好处的。)
个人理解:dwz框架对检索到的当前页面的每个table都执行了jTable()函数,即对该table该绑定的事件都绑定了,但是如果在jtable的开头声明一个变量的话,两个table初始化时会不会相互影响呢。说到底dwz 是个js框架,js都是函数,最终都是要在同个页面解释执行的,后者很可能会覆盖前者的变量。不考虑这么多了,反正我增加的自定义事件,只是初始化时把函数名传过来,最终还是在本table的tr的click中执行的,因此变量只是起了个传递的作用,外部并不调用它。因此,执行上没有问题,而且我也已经验证过了多个table不会影响。
下面就上代码吧:
1.dwz.ui.js
//tables
//alert('初始化dwz.ui.table');
//alert($("table.table", $p).length);
//原来的初始化语句
//$("table.table", $p).jTable();
//优化后的初始化语句,让外部可以获取到点击某行选中的值
$("table.table", $p).each(function(){
var $this=$(this);
var opts={};
if ($this.attr("onselrow")) opts.onselrow= $this.attr("onselrow");
$this.jTable(opts);
});
2.dwz.stable.js
$.fn.jTable = function(options){
//alert('运行dwz.stable.jtable');
//alert(options);
var onselrow=options.onselrow; //!!dwz初始化时,将页面的table的onselrow属性规定的函数名字传进来。
//alert(onselrow);
......
........
$tr.click(function(){
//根据前台页面table设置的onselrow事件处理函数名字,在这里加上参数,形成新的函数