我还有另一个JavaScript / jQuery问题。一个最小的例子可能是:我有一个div,并且当鼠标进入时需要执行一些JavaScript。但由于某些原因(=实际上,有很多div,并且需要保留每个数据)我想使用一个对象作为回调的处理程序。这是一个小例子:
function handler($thediv)
{
this.somedata = 8;
$thediv.mouseenter(function() { this.callback(); });
}
handler.prototype.callback = function()
{
alert(somedata);
}
加载文档时会创建一个对象:
$(document).ready( function() {
new handler($("div"));
});
没有任何反应 - 除了执行构造函数。我现在已经尝试了几个小时,但是我无法解决这个问题......可能是微不足道的?!?
提前致谢,
斯特
编辑:一个完整的例子。
<html>
<script type="text/javascript" src="jquery-1.6.js"></script>
</head>
<body>
<div>
blah blahasdasdadsssssssssssssss
asddddddddddddddddddddddddddd
</div>
</body>
<script type="text/javascript">
$(document).ready(function() {
new handler($("div"));
});
function handler($thediv)
{
this.somedata = 8;
$thediv.mouseenter(this.callback);
}
handler.prototype.callback = function()
{
alert(somedata);
}
</script>
</html>
答案 0 :(得分:3)
这里最大的问题是在各种情况下使用this
。在mouseenter函数中,this
指的是div,而不是对象。
这应该有效:
function handler($thediv)
{
this.somedata = 8;
this.theID=$thediv.attr("id");
var obj=this;
$thediv.mouseenter(function() {
obj.callback();
});
}
handler.prototype.callback = function()
{
alert(this.theID + " : " + this.somedata);
}