是可以的。
如果你用的是jQuery的话,使用proxy方法更简单
$(elem).bind("xxxx",$.proxy(function () {
//do something on elem
},elem))
On 1月1日, 上午2时54分, 智障 <
[hidden email]> wrote:
> 如果
> $(function() {
> var i=0, elem;
> while (i<xxx) {
> elem = 创建元素;
> $(elem).bind("xxxx", function() {
> elem处理;})
>
> }
>
> 那么,就会使所有的事件都只对最后一个元素进行处理。因为事件处理函数中的elem是在其定义作用域中有定义的。所谓闭包。
>
> 但是,如果我以其道反施其身,另外创建一个闭包,会如何?把事件处理代码改成:
>
> (function(obj) {
> $(obj).bind("xxxxx", function() {
> obj处理;})
>
> })(elem);
>
> 这时,事件处理函数的定义域是外层匿名函数。外层匿名函数的obj是每一次调运应该都是动态确定的,也就是说,应该能够达到目的。
--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
规则:
http://code.google.com/p/cpyug/wiki/PythonCn发言:
[hidden email]
退订:
[hidden email] (向此发空信即退!)
详情:
http://code.google.com/p/cpyug/wiki/PythonCn严正: 理解列表! 智慧提问!
http://wiki.woodpecker.org.cn/moin/AskForHelp强烈: 建议使用技巧: 如何有效地报告Bug
http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html