1
benzhe 2012-05-11 10:48:57 +08:00
木有代码示例很难理解,可以尝试重载事件?
|
2
jtyjty99999 OP @benzhe 是这样的,比如我发起一个ajax请求,在success中返回data,之后$(#id).click(function (data){})
现在我想把这个function (data)提到document上面,做成 document.onclick = function(ev) { var ev = ev || window.event; var target = ev.target || ev.srcElement; switch (target.id) { case "id": $(target).attr('binded')&&function(data); break; 但这样就会报data未定义了。。。 |
3
EchoFUN 2012-05-11 11:06:48 +08:00
试试,把返回的data付给window。即,window.data = data。
或者再success后执行一个回调,在回调中再addeventlistener或者attachevent下这个方法。 |
4
krazy 2012-05-11 11:06:56 +08:00
为什么要改成原生js,不用jquery的delegate。
回复里面应该是变量作用域的问题 |
6
jtyjty99999 OP @EchoFUN 这样我也考虑了。。会污染全局变量吧。。。
|
7
benzhe 2012-05-11 11:34:59 +08:00 1
@jtyjty99999 如果一定要先委托,全局变量应该是最好的办法,怕污染的话可以先定义好这个变量。否则就选择在后面重载事件。
|
8
jtyjty99999 OP 可以用delegate,但是就不知道原生js是怎么实现传值的
|
9
jtyjty99999 OP @benzhe 好的~明白了,非常感谢,最后我的办法是,把data赋给了元素的某个属性。。。
|
10
yangg 2012-05-11 11:49:58 +08:00
@jtyjty99999 那也用$("el').data()方法 啊
|
11
wong2 2012-05-11 12:02:47 +08:00
不想污染全局变量的话可以这样吧。。
!function(){ var data; $.get("/echo/json/", function(responseData){ data = responseData; }); document.onclick = function(ev) { var ev = ev || window.event; var target = ev.target || ev.srcElement; switch (target.id) { case "id": $(target).attr('binded') && alert(data); break; } }; }(); |
12
wong2 2012-05-11 12:03:34 +08:00 1
@wong2 格式全乱了。。。来这里看吧: http://jsfiddle.net/UCCDL/
|
13
jtyjty99999 OP @wong2 明白你的意思~非常感谢~
|