我准备询问如何在JavaScript原型中绑定(jQuery)事件。所以我创建了一个片段,希望它不能像我预期的那样工作。
然而它确实如此,而且由于我不想让代码片段浪费,我会提出另一个问题:)
为什么会这样? initEvent()
方法是否在对象内创建了事件的属性 - 在console.log( test );
中找不到它?
function rgb2hex(rgb) {
rgb = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
function hex(x) {
return ("0" + parseInt(x).toString(16)).slice(-2);
}
return "#" + hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]);
}
function TestPrototype(container) {
this.container = container;
} // TestPrototype 'constructor'
TestPrototype.prototype.initEvent = function() {
var _that = this;
$("body").on("click", this.container, function() {
var rgb = $(_that.container).css("background-color");
var hex = rgb2hex(rgb).toUpperCase();
if (hex == "#FF0000")
$(_that.container).css("background", "#0000FF");
else
$(_that.container).css("background", "#FF0000");
});
} // initEvent
var test = new TestPrototype("#test");
test.initEvent();

#test {
width: 100px;
height: 100px;
background: #F00;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="test" title="Click on me">
</div>
&#13;