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

Javascript 在$(文档)上绑定事件时绑定上下文,javascript,jquery,javascript-events,mouseevent,Javascript,Jquery,Javascript Events,Mouseevent,情况是这样的: 我有一个div,我们可以使用$('#container')获得它,这个div的子div是('#tracker')。 在tracker上,我将事件绑定为: $(document).on('mousemove', '#tarcker', function(e) { console.log(e.clientX); } 但是,我希望将其绑定到容器上下文中,即我希望功能与以下相同: $('#tracker', '#container').onmousemove = functio

情况是这样的: 我有一个div,我们可以使用$('#container')获得它,这个div的子div是('#tracker')。 在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);
}
$(document).on('mousemove',函数(e){
console.log(e.clientX);
}

我可能弄错了,因为这似乎有点明显,但这就是你想要的吗

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

}

只需将传递的选择器扩展到
.on()
即可仅查找
#tracker
元素中的
#container
元素:

$(document).on('mousemove', '#container #tracker', function(e) {
    console.log(e.clientX);
});
如果要将对象缓存到另一个变量中,有几种方法可以做到这一点。第一种方法与以前相同,但在调用
.on()
:

或者,如果您只需要在事件处理程序函数中使用它,可以这样做:

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

您应该已经有了相同的功能,因为ID值是唯一的。上下文应该不会对它们产生任何影响。@jamesalardice唯一有意义的是当您在页面之间共享脚本时,两者都有一个
#tracker
元素,但它们中只有一个在
#容器
元素中(而且你只想要那个页面上的功能。)啊,对不起,在看到回答后,我刚喝了几杯咖啡。我会更新这个问题。我想问的是:我可以缓存
var v=$(“#tracker',“#container”)
,然后我可以执行
v.onmousemove=function(){…}
。如何在文档中执行相同操作counterpart@gashu您希望缓存哪个部分?虽然我不明白为什么需要这样做。如果需要引用函数中的
#tracker
元素,您可以使用
this
(对于实际的DOM节点)或
$(this)
(对于包含它的jQuery对象)。您可以将其缓存在函数中:
var v=$(this);
@gashu哦,等等,需要仔细阅读。您的第二个代码段不正确;它在jQuery对象上设置了一个属性,但不会绑定任何事件处理程序。@gashu编辑了我的答案(希望如此)解决你想要的问题。啊,对不起,在看到回答后,我喝了几杯咖啡。我会更新这个问题-gashu 1分钟前编辑我想问的是:我可以缓存var v=$(“#tracker',“#container”),然后我可以执行v.onmousemove=function(){…}。我如何在文档中执行同样的操作
$(document).on('mousemove', '#container #tracker', function(e) {
    var v = $(this);
    // use v here
});