Javascript事件——如何创建和存储一个只能被一个元素访问的变量

Javascript events - how to create and store a variable that should only be accessed by one element?

本文关键字:一个 元素 变量 访问 存储 事件 何创建 创建 Javascript      更新时间:2023-09-26

我在玩一个脚本时遇到了一点问题。我试着画一个三角形当你点击它们时,它们会"翻转"并改变颜色,如果再次点击,它们将恢复到初始状态。问题是我不确定在哪里设置isflipped变量。

有人有任何想法/有人提出过这样的问题吗?以下是我目前的资料:

http://jsfiddle.net/hnqB6/17/

使用数据

//read
$(yourElem).data("flipped")
//write
$(yourElem).data("flipped", true);

您可以将map中的值以元素的索引作为键保存,例如

var flipmap = {}
flimmap[index] = false
//later in click
flipmap[index] = !flipmap[index]

另一种选择是使用jquery数据API将数据附加到元素中,例如

每个元素的第一个初始值

jQuery.data($("canvas")[i], 'flipped', false)//not-flipped

var flipped = jQuery.data(elem,'flipped')//old value
flipped = !flipped;//toggle it
jQuery.data(elem,'flipped',flipped)//save it 

我已经用

更新了示例http://jsfiddle.net/anuraguniyal/hnqB6/38/

如果你保持每个画布只有一个三角形的设计,你可以使用jQuery的data()方法在画布元素本身设置翻转状态。因此,在您的点击事件处理程序使用$(e.currentTarget).data('isflipped', 1);设置状态和var isflipped = $(e.currentTarget).data('isflipped')获取状态。

如果你不使用每个画布一个三角形,你需要考虑添加一个中间的绘画抽象,让你从直接模式的画布绘画进入一些更保留模式。

您也可以在每个画布上使用一个简单的属性'flipped'来做到这一点,但这就是Darek在他的评论中所说的(使用类代替)http://jsfiddle.net/hnqB6/55

您可以使用data将变量附加到元素本身。我已经更新了你的小提琴,看看它。