我曾经有一个像这样的按钮:

<input type="button" value="Save" onclick="SaveReleaseStage(this, 'Reassigned', 'ReleaseStage/ReassignProcess');" />


传递的“ this”是按钮。一切都很好。

当我将其更改为:

<input type="button" value="Save" onclick="ShowConfirmation('Confirm', 'Some message...', function () { SaveReleaseStage(this, 'Reassigned', 'ReleaseStage/ReassignProcess'); });" />


现在,“ this”是Window对象而不是按钮。

有没有一种方法可以将按钮传递给回调,而不用添加ID并使用getElementById或jQuery?

最佳答案

因为它是一个没有绑定上下文的匿名函数,所以this默认为全局对象。您的情况是window

在此处进一步了解this行为:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this

更新:根据您的问题编辑,您可以将闭包引用传递给按钮:

<input type="button" value="Save" onclick="var self=this; ShowConfirmation('Confirm', 'Some message...', function () { SaveReleaseStage(self, 'Reassigned', 'ReleaseStage/ReassignProcess'); });" />


演示:http://jsfiddle.net/8caMT/

09-30 13:25
查看更多