我正在尝试获取对单元格的引用,它显示为null。如果我正确理解它,我应该能够引用变量。正确的吗?
$('td[someAttr]').mouseenter(function(cell) {
var timeoutId = setTimeout(function() {
// what should variable cell be?
}, 1000);
});
OR
$('td[someAttr]').mouseenter(function(cell) {
var timeoutId = setTimeout(function() {
// what should variable cell be?
}, 1000, cell);
});
更新:这很明显但我问这个的原因是因为如果你有的话,cell.pageX将是未定义的:
$('td[someAttr]').mouseenter(function() {
var cell = this; //
var timeoutId = setTimeout(function() {
alert(cell.pageX); // cell.pageX will return null
}, 1000);
});
但是,如果你有:
$('td[someAttr]').mouseenter(function(cell) {
alert(cell.pageX); // works fine as cell.pageX will have correct value.
});
答案 0 :(得分:4)
事件处理程序的上下文设置为触发事件的元素。你可以这样做:
$('td[someAttr]').mouseenter(function() {
var cell = this;
var timeoutId = setTimeout(function() {
alert(cell.tagName);
}, 1000);
});
您可能还想将其包装为jQuery对象:var cell = $(this);
更新:第一个参数是事件对象,而不是元素。元素被设置为回调的上下文(即this),您可以完全按照示例中的方式访问事件对象:
$('td[someAttr]').mouseenter(function(event) {
var cell = this;
var timeoutId = setTimeout(function() {
alert(cell.tagName + ' ' + event.pageX);
}, 1000);
});
请注意,“cell”元素也可以作为“event.target”访问。