Sytuacja wygląda następująco: Mam div, który możemy uzyskać za pomocą $ ("# container"), a div dziecka tego div jest ("#tracker"). Na trackerze wiążę wydarzenie jako:
$(document).on("mousemove", "#tarcker", function(e) {
console.log(e.clientX);
}
Chciałbym jednak powiązać go w kontekście kontenera, tzn. Życzę sobie funkcjonalności takiej jak:
$("#tracker", "#container").onmousemove = function() { ... }
ale zastosowane do dokumentu. Lub sugestie stwierdzające inaczej
[EDYTOWAĆ] Przepraszam za niejasne oryginalne pytanie.
Jeśli spróbuję buforować, to mogę to zrobić var v = $("#tracker", "#container")
a potem mogę to zrobić v.onmousemove = function () { ... }
Jak to działa
$(document).on("mousemove", <cached in var>, function(e) {
console.log(e.clientX);
}
Odpowiedzi:
1 dla odpowiedzi № 1Po prostu rozwiń selektor przekazany do .on()
tylko znaleźć #tracker
elementy, które są wewnątrz #container
element:
$(document).on("mousemove", "#container #tracker", function(e) {
console.log(e.clientX);
});
Jeśli chcesz buforować obiekt w innej zmiennej, możesz to zrobić na kilka sposobów. Pierwszy jest taki sam jak wcześniej, ale nie będziesz go używać, gdy zadzwonisz .on()
:
var v = $("#tracker", "#container");
$(document).on("mousemove", "#container #tracker", function(e) {
// use v here
});
// you can also use v here
Lub, jeśli tylko tego potrzebujesz wewnątrz funkcji obsługi zdarzeń, możesz to zrobić w ten sposób:
$(document).on("mousemove", "#container #tracker", function(e) {
var v = $(this);
// use v here
});
1 dla odpowiedzi nr 2
Może się mylę, bo wydaje się to trochę oczywiste, ale czy tego chcesz?
$(document).on("mousemove", "#container #tracker", function(e) {
}