通过dom元素参考纸张

时间:2014-03-05 16:31:15

标签: raphael

有没有办法通过引用元素来获取元素的纸张?

我在循环中创建元素,每个元素我都在创建一个新的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
    })
})

2 个答案:

答案 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
    })
})