作者TonyQ (沉默是金。)
看板Ajax
标题Re: [问题] 参数相互传递的问题
时间Wed Nov 24 18:21:54 2010
※ 引述《JYHuang (夏天到了,冷不起来了说)》之铭言:
: 举个例来说,之前有写个grid的函式
: 会在table上加些功能。
: $("table").grid({'resize':true})
: $.fn.grid = function(param){
: var p = $.extend({
: resize : false,
: .... : true
: },param)
: var table = $(this);
:
: // 相关的处理函式
: var acts= {
: resize_col:function(){
: if(p.resize){
: //缩放表格宽度的程式
: $("thead th",this).each(function(){
: do some thing~
: }
: }
: },
: blablabla :function(){
: }
: }
: }
: 一些动作跟参数就省略了,
: 主要的用意是在thead上的th做拖拉缩放时tbody下的栏位也会跟着变宽
: 因为一些event是在.grid()时就加上去了
: 如果後来又新增一个column,会变成後来新增的并没有挂上event..
是这个需求的话,考虑一下挂 live event 也是个方案喔,
如果有机会挂成 live event 是最简单啦~
我觉得你这需求如果不用live ,
应该是要把 挂event 这件事写成 static utilty ,
你说得功能照我的习惯我大概会这样作
ex.
var ColumnEvent = {
register:function(target){
$(target) // do something
}
};
// ColumnEvent.register(column) ;
$.fn.grid= function(){
$columns = $("....");
$columns.each(function(){
ColumnEvent.register(this);
});
}
$.fn.addColumn= function(data){
var column = buildColumn(data);
ColumnEvent.register(column);
}
如果要共享资料或function的话,可以考虑把资料放在data里面。
$(this).data("key","value") ;
基本上很多方法啦,因为你没有把 Column 的方式讲出来,
但是大抵上,就是资料怎麽存跟事件对象怎麽拿到而已,
多绕个几圈总是拿得到的。
我的习惯是不同的事情有不同的 delegater ,所以看到 funcA 跟 funcB ,
我的第一个直觉就是写个 funcC 来让他们互动。
: 因此要先在grid()里先加新增column并挂上event的函式
: 然後在grid()的外部去呼叫这个新增的函式并且把参数传进去
: --
: var B = funcB()
: 用上面的例子来说会是
: var table1 = $("table.tab1").grid(..)
: 先把<table class="tab1">加挂grid的功能上去
: 当有新的栏位被加进来时
: table1.addCol(..)
: 这样来挂上述的拖拉缩放的行为。
--
I am a person, and I am always thinking .
Thinking in love , Thinking in life ,
Thinking in why , Thinking in worth.
I can't believe any of what ,
I am just thinking then thinking ,
but worst of all , most of mine is thinking not actioning...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.133.44.37
1F:推 JYHuang:要描述column的话会落落长 11/24 22:00
2F:→ JYHuang:先是产生drag bar、然後加上mousedown=startdrag() 11/24 22:01
3F:→ JYHuang:mousemove=dragging() ; mouseup=drag_end() 11/24 22:01
4F:→ JYHuang:drag_end()里还会呼叫repose去重新定位drag bar 11/24 22:02
5F:→ JYHuang:接着把tbody的对应栏位设定宽度. 11/24 22:02
6F:→ JYHuang:讲了这麽多,其实大多是参考flexgrid的流程写的 :p 11/24 22:03
7F:→ TonyQ:试着把函式抽象化啊,描述不见得要描述实作。 11/24 22:55
8F:推 JYHuang:不知道能不能把Object包起来丢到 $(this).data 11/25 09:05
9F:→ TonyQ:当然可以啊 :D 11/25 11:17
10F:→ TonyQ:你的问题其实是架构的问题 这蛮值得讨论的。 11/25 11:17
11F:→ TonyQ:我很想针对这主题开一章,不过最近工作实在太忙了......-_-# 11/25 19:21