Javascript 一种跟踪和使用连续点击的方法
我想通过单击第一个元素,然后单击第二个元素来定义两个dom元素之间的关系(在我的特殊情况下,在to节点之间绘制线)。以下是我的方法。我不认为它特别优雅或干净。有更好的方法吗Javascript 一种跟踪和使用连续点击的方法,javascript,Javascript,我想通过单击第一个元素,然后单击第二个元素来定义两个dom元素之间的关系(在我的特殊情况下,在to节点之间绘制线)。以下是我的方法。我不认为它特别优雅或干净。有更好的方法吗 $(function() { var State = { initialClick: false, // tracks clicks status for drawing lines initialID: undefined // remember data gotten from the f
$(function() {
var State = {
initialClick: false, // tracks clicks status for drawing lines
initialID: undefined // remember data gotten from the first click
};
...
$map.on('click', '.node', function() {
var $this = $(this),
currentID = $this.attr('data-id');
if (State.initialClick) {
if (State.initialID === currentID) {
// process first click
} else {
// process second click
}
resetClickTracking();
} else {
setState(currentID);
}
});
...
function setState(id) {
State.initialClick = true;
State.initialID = id;
}
function resetState() {
State.initialClick = false;
State.initialID = undefined;
}
});
我可能会选择委托模式:
var lastNodeClicked = null;
$map.on('click', '.node', function() {
if (lastNodeClicked && lastNodeClicked !== this) {
// draw line
lastNodeClicked = null; // reset
} else {
lastNodeClicked = this;
}
});
您也可以使用单击的节点无条件地更新它,而不是重置上次单击的节点;这样,您可以用较少的单击来绘制线;-) 我可能会选择委托模式:
var lastNodeClicked = null;
$map.on('click', '.node', function() {
if (lastNodeClicked && lastNodeClicked !== this) {
// draw line
lastNodeClicked = null; // reset
} else {
lastNodeClicked = this;
}
});
您也可以使用单击的节点无条件地更新它,而不是重置上次单击的节点;这样,您可以用较少的单击来绘制线;-) 那肯定比我的高一步。在给出答案之前,我会看看是否还有其他建议。这肯定比我的建议高出一步。在给出答案之前,我会看看是否还有其他建议。