有没有办法通过引用元素来获取元素的纸张?
我在循环中创建元素,每个元素我都在创建一个新的Raphael(...)。见下面的示例。
基本上我想在点击时停止动画,但纸张未定义,并且在元素本身上调用stop()也不起作用。
$.each(el,function(key,value)
{
var li = $("<li>",{id:"item"+key).appendTo("#myUl");
var ppr = new Raphael($("item"+key),get(0),48,48);
//... do stuff like animate ...
li.click(function()
{
console.log($(this).paper); //undefined
})
})
答案 0 :(得分:1)
我想知道下面的闭包来捕获纸张,所以当匿名func运行时,它会捕获变量。
注意,我不确定这是总体上最好的方法,每次创建新论文时感觉有点笨拙,但只是试图解决具体问题。
未经测试的代码,但如果您可以使用它,我认为应该可以进行排序。
$.each(el,function(key,value)
{
var li = $("<li>",{id:"item"+key).appendTo("#myUl");
var ppr = new Raphael($("item"+key),get(0),48,48);
(function() {
var myPaper = ppr;
li.click(function()
{
console.log(myPaper);
})
})();
})
答案 1 :(得分:0)
您还可以使用https://api.jquery.com/data/
将纸张附加到元素的“数据”中
$.each(el,function(key,value)
{
var li = $("<li>",{id:"item"+key).appendTo("#myUl");
var ppr = new Raphael($("item"+key),get(0),48,48);
li.data("paper", ppr ); // SAVE
li.click(function()
{
console.log($(this).data("paper")); // LOAD
})
})