Javascript 在$(文档)上绑定事件时绑定上下文
情况是这样的: 我有一个div,我们可以使用$('#container')获得它,这个div的子div是('#tracker')。 在tracker上,我将事件绑定为: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
$(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
});