Jquery 继承和原型事件
阅读完本文后,我尝试创建一个对象窗口,使用新构造函数创建的对象可以作为窗口-当有人按下右上角的“X”按钮时,窗口关闭(div的css设置为display:none;):Jquery 继承和原型事件,jquery,prototype,Jquery,Prototype,阅读完本文后,我尝试创建一个对象窗口,使用新构造函数创建的对象可以作为窗口-当有人按下右上角的“X”按钮时,窗口关闭(div的css设置为display:none;): var WindowSingle=函数(obj){ this.obj=obj; this.ishiden=false; this.obj.show(); this.events.click.call(this); }; WindowSingle.prototype.Close=函数(){ this.ishiden=true;
var WindowSingle=函数(obj){
this.obj=obj;
this.ishiden=false;
this.obj.show();
this.events.click.call(this);
};
WindowSingle.prototype.Close=函数(){
this.ishiden=true;
this.obj.closest('.window').hide();
};
WindowSingle.prototype.events={
“单击”:函数(){
var self=这个;
var obj=this.obj;
obj.find('.closeX')。在('click',function()上{
self.Close();
});
}
};
$(文档).ready(函数(){
MyWindowsSingle=新WindowsSingle($(“#myWindow”);
});代码>
.window{
边框:1px纯灰;
利润率:10px;
填充:10px;
显示:无;
宽度:250px;
}
closeX先生{
位置:相对位置;
顶部:0px;
左:230像素;
光标:指针;
}
X
知识产权是一种权利,是一种精英的权利,是劳动和财富的暂时性权利。知识产权是一种权利,是一种精英的权利,是劳动和财富的暂时性权利。
第一个问题的答案非常简单。要循环浏览所有可能有CSS选择器的事件,只需执行以下操作:
var WindowSingle = function (obj) {
this.obj = obj;
this.isHidden = false;
this.obj.show();
this.registerEvents();
};
WindowSingle.prototype.registerEvents = function () {
var self = this;
Object.keys(self.events).forEach(function (key) {
var parts = key.split(" ");
// Handle CSS selector.
if (parts[1]) {
self.obj.on(parts[0], parts[1], function () {
self.Close();
});
// Handle no CSS selector.
} else {
self.obj.on(parts[0], function () {
self.Close();
});
}
});
}
.on('click',self.Close)
问题稍微高级一点。在这种情况下,事件将绑定到click事件,问题在于函数的上下文(这是什么意思)。jQuery总是将事件处理程序的上下文设置为DOM元素,但在本例中,您需要将其作为WindowSingle
实例。两种解决方案是绑定上下文或创建一个新函数
var self = this;
// Bind the context.
obj.find('.closeX').on('click', self.Close.bind(self));
// Create a new function.
obj.find('.closeX').on('click', function () {
self.Close();
});
我希望这能有所帮助。你第一个问题的答案非常简单。要循环浏览所有可能有CSS选择器的事件,只需执行以下操作:
var WindowSingle = function (obj) {
this.obj = obj;
this.isHidden = false;
this.obj.show();
this.registerEvents();
};
WindowSingle.prototype.registerEvents = function () {
var self = this;
Object.keys(self.events).forEach(function (key) {
var parts = key.split(" ");
// Handle CSS selector.
if (parts[1]) {
self.obj.on(parts[0], parts[1], function () {
self.Close();
});
// Handle no CSS selector.
} else {
self.obj.on(parts[0], function () {
self.Close();
});
}
});
}
.on('click',self.Close)
问题稍微高级一点。在这种情况下,事件将绑定到click事件,问题在于函数的上下文(这是什么意思)。jQuery总是将事件处理程序的上下文设置为DOM元素,但在本例中,您需要将其作为WindowSingle
实例。两种解决方案是绑定上下文或创建一个新函数
var self = this;
// Bind the context.
obj.find('.closeX').on('click', self.Close.bind(self));
// Create a new function.
obj.find('.closeX').on('click', function () {
self.Close();
});
我希望这有帮助