gpt4 book ai didi

javascript - 一种跟踪和使用顺序点击的方法

转载 作者:行者123 更新时间:2023-11-28 02:33:52 26 4
gpt4 key购买 nike

我想定义两个 dom 元素之间的关系(在我的特定情况下,在节点之间绘制线条),方法是单击第一个元素,然后单击第二个元素。以下是我的做法。我不认为它特别优雅或干净。有更好的方法吗?

$(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;
}

});

最佳答案

我可能会选择委托(delegate)模式:

var lastNodeClicked = null;

$map.on('click', '.node', function() {
if (lastNodeClicked && lastNodeClicked !== this) {
// draw line
lastNodeClicked = null; // reset
} else {
lastNodeClicked = this;
}
});

除了重置上次点击的节点之外,还可以无条件地用点击的节点更新它;这样您就可以用更少的点击次数绘制线条;-)

关于javascript - 一种跟踪和使用顺序点击的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13747061/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com