在加载DOM之后初始化jQuery插件($ .live())

时间:2012-01-14 19:48:06

标签: jquery

我正在使用此插件创建图表:http://www.filamentgroup.com/lab/update_to_jquery_visualize_accessible_charts_with_html5_from_designing_with/

如果我在firebug中通过控制台运行代码,下面的代码可以工作,但是如果我在重新加载页面时运行它就不会加载图表。

我猜它是因为父元素是在加载DOM之后创建的。

所以我想知道我是否可以用jQuery live()解决这个问题?载荷如:

  • 请求用户位置
  • 显示单页面视图(这是通过JSON数据创建元素的位置)

有关如何在创建新元素后启动插件的任何想法?

$('#snow-line').visualize({type:'bar'});

$('#resort-open').visualize({
    type:'pie',
    colors: ['#658AB6','#FAFAFA']
});

更新

这就是我通过JSON对象呈现数据的方式

var resortOpenPerc = loadResort.openDownHillPercent;
var ressortOpenDiff = 100-resortOpenPerc;

$("#resort-open tbody tr:eq(0) td:first").html(resortOpenPerc);
$("#resort-open tbody tr:eq(1) td:first").html(ressortOpenDiff);

此错误正在呈现:

Index or size is negative or greater than the allowed amount
domain.com/visualize.js
Line 201

2 个答案:

答案 0 :(得分:2)

  

“所以我想知道我是否可以用jquery live()来解决这个问题?”

没有。推测.live()方法可能部分是因为它没有传达这仅仅是事件委托的事实。

换句话说,它只适用于处理浏览器事件,而不是像插件那样的任意代码。


你说使用Mustache.js创建“元素,并通过JSON加载数据

我不知道你的代码意味着什么(因为你没有发布),但是如果你在创建新元素时没有直接访问它们,那么只需选择它们 之后,它们已被添加到DOM中,并在那时运行插件。

// code to create new elements...

$('#snow-line').visualize({type:'bar'});

$('#resort-open').visualize({
    type:'pie',
    colors: ['#658AB6','#FAFAFA']
});

如果这不起作用,那么还有其他一些问题,您需要发布您的代码,以便我们可以看到问题。

答案 1 :(得分:0)

我认为您可以使用livequery插件:

$('#snow-line').livequery(function() {
    $(this).visualize({type:'bar'});
});

$('#resort-open').livequery(function() {
    $(this).visualize({
        type:'pie',
        colors: ['#658AB6','#FAFAFA']
    });
});