在$(文档)上绑定事件时绑定上下文

时间:2013-04-12 09:07:45

标签: javascript jquery javascript-events mouseevent

情况是这样的: 我有一个div,我们可以使用$('#container')和这个div的子div('#tracker')。 在跟踪器上,我将事件绑定为:

$(document).on('mousemove', '#tarcker', function(e) {
    console.log(e.clientX);
}

但是,我希望在容器的上下文中绑定它,即我希望功能与:

相同
$('#tracker', '#container').onmousemove = function() { ... }

但适用于该文件。或建议说明否则

[编辑] 对不起,原来的问题含糊不清。

如果我尝试缓存,那么我可以var v = $('#tracker', '#container')然后我可以v.onmousemove = function () { ... }

这对

有什么作用
$(document).on('mousemove', <cached in var>, function(e) {
    console.log(e.clientX);
}

2 个答案:

答案 0 :(得分:1)

我可能会弄错,因为它看起来有点明显,但这是你想要的吗?

$(document).on('mousemove', '#container #tracker', function(e) {

}

答案 1 :(得分:1)

只需将传递给.on()的选择器扩展为仅查找#tracker元素内的#container个元素:

$(document).on('mousemove', '#container #tracker', function(e) {
    console.log(e.clientX);
});

如果要将对象缓存在另一个变量中,可以采用几种方法。第一个与之前相同,但是当您致电.on()时,您将不会使用它:

var v = $('#tracker', '#container');

$(document).on('mousemove', '#container #tracker', function(e) {
    // use v here
});

// you can also use v here

或者,如果您只需要事件处理函数中的 ,那么您可以这样做:

$(document).on('mousemove', '#container #tracker', function(e) {
    var v = $(this);
    // use v here
});