【发布时间】:2012-01-07 08:31:54
【问题描述】:
谁能告诉我为什么我不能使用 $.proxy 来删除一个 dom 元素。
更新:我知道我可以使用匿名函数,但我特别想知道为什么 $.proxy 不起作用。
<html>
<head>
<title>$.proxy Test</title>
</head>
<body>
<ul id="test">
</ul>
<script>
var test = $('#test');
var li = $('<li>Test Entry</li>').appendTo(test);
li.click($.proxy(li, 'remove')); // Does not work
//li.click($.proxy(li.remove, li)); // Does not work
//li.click(function(){li.remove();}); // Works
</script>
</body>
</html>
更新 2 :我不想使用通常的函数定义语法,因为我不想将单个语句扩展到多行。因此我决定使用以下语法。我不知道这是否是一个好习惯,但对我来说,这样代码看起来更干净。
$.proxy(new Function('this.remove()'), li);
【问题讨论】:
-
您检查过
$.proxy()期望的参数吗? api.jquery.com/jQuery.proxy 还有,这种情况下为什么需要代理功能? -
zerkms:据我了解,$.proxy 应该同时支持
$.proxy(li, 'remove')(上下文,函数名)和$.proxy(li.remove, li)(函数,上下文)