jquery和ajax工具提示不适用于实时加载的内容

时间:2010-10-08 16:55:49

标签: javascript jquery ruby-on-rails ajax

我使用Ruby on Rails和Jquery作为我的库和2个插件,但这应该是一个相当插件独立的问题。

我正在使用jquery.pageLess插件,该插件对内置于rails中的分页进行ajax调用,以便在滚动到底部时将新项目加载到页面上(非常类似于新的Google图像布局)。

但是,我也使用tipsy插件将工具提示添加到正在加载的链接的图像部分。

这些工具提示可以很好地处理未加载pageLessly的项目(已经在最初加载的页面上),但不会显示在加载了pageLess的项目上。我的猜测是pageLess提供了一个实时的实时请求来更新页面,但是却没有提示具体的工具提示插件,因此没有加载到pageLess返回的任何新链接上。

如何让我的jQuery函数在live load / ajaxed内容的上下文中工作?

1 个答案:

答案 0 :(得分:9)

$('selector').tipsy({
  live: true
});

http://onehackoranother.com/projects/jquery/tipsy/

  

支持直播活动
  使用{live:true}选项支持直播活动。 jQuery≥1.4.1是必需的,实时工具提示不支持手动触发。

修改
另一种方法是在创建新元素后将它们绑定到新元素。例如:

$('selector').tipsy();

// post, get, ajax, etc
$.post(..., function(data) {
  // in the return function, first create the new elements
  ...

  // call on the tipsy method again
  // the selector will now also match the newly created elements
  $('selector').tipsy();
});

如果tipsy方法中包含很多变量并且您不想重复它,那么创建单独的函数可能会更容易。例如:

// create the function 
function setupTipsy() {
  $('selector').tipsy({
    html: true,
    gravity: 'w',
    etc..
  });
}

// call on the function when the document has been loaded
setupTipsy();

// post, get, ajax, etc
$.post(..., function(data) {
  // in the return function, first create the new elements
  ...

  // call on the same function again
  setupTipsy();
});