Javascript事件 - 如何创建和存储只应由一个元素访问的变量?

时间:2011-12-02 19:13:52

标签: javascript jquery variables javascript-events

我正在玩一个与我正在玩的脚本有点问题。我正在尝试绘制三角形,当你点击它们“翻转”并改变颜色时,如果再次点击它们会恢复到它们的初始状态。问题是我不确定在哪里设置“isflipped”变量。

有没有人有任何想法/有没有人想出这样的问题?这就是我现在所拥有的:

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

谢谢!

5 个答案:

答案 0 :(得分:4)

使用数据

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

答案 1 :(得分:1)

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

如果你不为每个画布使用一个三角形,你需要考虑添加一个中间绘图抽象,以使你从即时模式画布中抽出更多保留模式。

答案 2 :(得分:1)

您可以将元素索引作为键保存在地图中,例如

var flipmap = {}
flimmap[index] = false

//later in click
flipmap[index] = !flipmap[index]

其他替代方法是使用jquery data API将数据附加到元素,例如

每个元素的第一个init翻转值

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/

答案 3 :(得分:0)

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

答案 4 :(得分:-1)

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