/ / Bind context, gdy powiązanie zdarzenia w $ (document) - javascript, jquery, javascript-events, mouseevent

Powiązanie kontekstu, gdy zdarzenie wiąże się z $ (dokument) - javascript, jquery, javascript-events, mouseevent

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 № 1

Po 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) {

}