【发布时间】:2011-03-12 09:09:34
【问题描述】:
我知道有很多类似的问题,但我已经尝试了所有这些都无济于事......所以感谢您的帮助。
我想做什么: 我想在注册时将一对多参数传递给每个复选框的“点击”事件(见下文)。
工作原理: 我可以在没有任何参数的情况下注册事件,并且单击事件会引发...但我需要传入对包含 JavaScript 网格对象的引用(出于其他原因)。
什么失败 我尝试了各种形式的“this.MutuallyExclusiveCheckBoxHandler = function(grid){}”,但无济于事。
一个想法: 我“认为”currying 可能是答案,但我不太清楚如何做得足够好(还)。
此区域实例化网格并注册复选框
<script type="text/javascript">
<!--
// CLASS
function CommitImporterGrid() {
// PROPERTIES
this.Toaster = new Toaster();
this.CheckBoxes = new Array();
// METHODS
this.RegisterMutuallyExclusiveCheckBox = function(clientId) {
var checkBox = $j('input:checkbox#' + clientId);
// HERE: "I need to pass a reference to the grid somehow"
$j(checkBox).click(this.MutuallyExclusiveCheckBoxHandler);
this.CheckBoxes.push(checkBox); // Append to array
}
this.MutuallyExclusiveCheckBoxHandler = function() {
// The checkbox events break when I try to add a parameter.
var myGrid = "I need to retreive the grid reference here somehow";
if (!$j(this).is(':checked')) { // They clicked on the same checkbox
this.checked = true;
return;
}
// ...other code...
}
}
// CLASS INSTANCE
var myGrid = new CommitImporterGrid();
// DOM EVENT: Document.Ready()
$j(document).ready(function() {
// DYNAMIC REGISTRATION
myGrid.RegisterMutuallyExclusiveCheckBox('chkCommitImporter01');
myGrid.RegisterMutuallyExclusiveCheckBox('chkCommitImporter02');
});
-->
</script>
【问题讨论】:
标签: javascript jquery events checkbox