0

我正在尝试获取对单元格的引用,但它显示为空。如果我理解正确,我应该能够引用该变量。正确的?

$('td[someAttr]').mouseenter(function(cell) {
    var timeoutId = setTimeout(function() {
        // what should variable cell be? 
    }, 1000);
});

或者

$('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.
});
4

1 回答 1

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”访问。

于 2009-06-25T21:28:22.033 回答