如何模仿jQuery.live(),或在Prototype库的存在下使用2个jQuery版本?

时间:2010-08-04 19:06:40

标签: jquery prototypejs conflict

我们将内容呈现在客户端提供的HTML“包装器”中。那个HTML包装器包含对jQuery 1.2.6的引用,所以这是我迄今为止用于jQuery功能的内容。

我面临的问题是我正在动态呈现需要与之关联的点击事件的内容。 click事件与$(document).ready()上的元素相关联。因此,我需要.live()函数的功能,该功能在1.3+版本中可用。

所以我想知道我的选择是什么?

有没有办法让我轻松模仿.live()的功能,这样我就不需要jQuery库提供的功能了?

我是否需要在内容中包含新的jQuery库?这不是理想的,因为它会导致需要管理的冲突,并且我们已经在管理与Prototype库的冲突,其他人已经在包装器中包含了以下行:

jQuery(document).ready(function ($) {

除非有人能告诉我一个简单的方法吗?

...还是我把它回到客户端,他们是时候升级他们的jQuery了?我不知道是否会发生这种情况。

有人能建议解决这个问题吗?感谢

2 个答案:

答案 0 :(得分:6)

您可以简单地推送自己的活动委派。例如,而不是绑定到动态创建的元素,例如:

$('.foo').click(function() { /* foo handler */ });

您可以将处理程序附加到更高级别的元素(如文档),并过滤单击事件:

$(document).click(function(evt) {
    var $target = $(evt.target);
    if ($target.is('.foo') || $target.parents('.foo').length > 0) {
        /* foo handler */
    }
});

这是 live (以及较新的委托)的基本构思。

<小时/> * 编辑了示例以检查事件目标的父元素

答案 1 :(得分:0)

你能使用livequery插件吗?应该使用该版本。

http://plugins.jquery.com/project/livequery/