嗯,我是JavaScript的OOP的新手,我一直在更改一些旧代码来创建可重用的代码。我决定将它们而不是一些内联代码变成一些JavaScript类。
因此,这里是我的类:类在JavaScript类的构造函数内部使用Jquery事件处理程序
function TreeStructure(psi, csi, csc, kwargs) {
this.parentSelectorId = psi;
this.childrenSelectorId = csi;
this.childrenSelectorClass = csc;
kwargs = (typeof kwargs === "undefined") ? 'NoOptionalArguments' : kwargs;
// First Question
$('#' + this.parentSelectorId).click(this.parentSelectHandler());
// Second Question
$('#' + this.parentSelectorId).on('click', this.parentSelectHandler(e));
};
TreeStructure.prototype.parentSelectHandler = function() {
alert("Why is it called after page loads ?!?
it's attached to a click handler huh?");
}
与用法:
$(document).ready(function(){
tree = new TreeStructure('blahId', 'blahId', 'blahClass');
});
但是运行这个时候,突发事件(对我来说)发生。因此,这里是我的两个问题:
1 -为什么页面加载后调用parentSelectHandler功能(我认为预期的行为是选择已被点击后调用)
2 - jQuery的事件处理程序,我?可以获取事件并将其传递给事件处理函数,但是当我尝试传递parentSelectHandler时,它的参数'e'
,它表示它没有被定义。
所以任何人都可以帮我吗?
感谢
至于我的第二个问题,我可以将参数(事件)传递给函数,如果我这样称呼它? – SpiXel
事件是自动传递的,我在第二个之前做了一个编辑以显示修改匿名函数来获取事件对象,它将在函数内的'e'变量中。 –
这真是太棒了:)谢谢 – SpiXel