我知道這裏有很多類似的問題,但我已經嘗試過所有這些都無濟於事......非常感謝您的幫助。使用jQuery將參數傳遞給JavaScript對象事件
我所試圖做的事: 我想在註冊一個一對多的參數傳遞到每一個複選框「click」事件(見下文)。
什麼工作: 我可以不帶任何參數的情況下注冊,並單擊事件引起了......但我需要傳遞到包含JavaScript網格對象的引用(由於其他原因)。
WHAT失敗 我已經試過各種形式的 「this.MutuallyExclusiveCheckBoxHandler =函數(網格){}」 的無濟於事。
一個想法: 我「認爲」咖喱可能是答案,但我不知道如何做得很好 - 還不夠。
這個區域實例化電網和註冊複選框
<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>
這不會得到正確的'this'。 – SLaks 2010-07-06 15:25:34
@SLaks:爲什麼?否則,它應該是'this.MutuallyExclusiveCheckBoxHandler'也不起作用。 – 2010-07-06 15:27:36
在處理程序中,「this」將是DOM元素。 – SLaks 2010-07-06 15:29:21