Javascript事件——如何创建和存储一个只能被一个元素访问的变量
Javascript events - how to create and store a variable that should only be accessed by one element?
我在玩一个脚本时遇到了一点问题。我试着画一个三角形当你点击它们时,它们会"翻转"并改变颜色,如果再次点击,它们将恢复到初始状态。问题是我不确定在哪里设置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将变量附加到元素本身。我已经更新了你的小提琴,看看它。
相关文章:
- 使用clickToggle并在单击另一个元素时关闭元素
- 表追加而不附加最后一个元素
- 滚动到容器中的下一个元素-几乎到了
- 使用CSS或js,使用动态选择器选择任意li的下一个元素
- 按我自己的类克隆另一个元素的内容和顺序
- Javascript获取上一个元素的内容
- 如何通过HTML+CSS中的另一个元素Selector更改元素的属性值
- 在数组中的一个元素上设置多个值
- 无法选择除一个元素外的所有元素
- 使用jquery contains获取一个元素并添加类
- $(.class).empty总是缺少一个元素
- jQuery-将列表项的一个元素移动到同一项的另一个元素中+对我的列表中的每个项执行此操作
- 如何在一个元素动画之后延迟
- jQuery转盘下一个元素没有滑入
- jquery从另一个元素中移除移除
- DIV怎么能像Javascript中的另一个元素一样工作呢
- 当知道同一hiearch中至少有一个元素时,遍历到元素.结构使用jquery
- 使用数据属性将HTML数据复制到另一个元素
- 如何选择给定类的上一个元素
- 动态修改一个元素,使其与给定的选择器匹配