jQuery插件在ajax加载的页面上无法工作

3
我在我的一个项目中使用jquery prettyPopin,它运行良好...问题是我希望它能够在使用ajax加载的php页面上工作。但它似乎不能正常工作...
简而言之,我的问题是:jQuery插件是否可以在ajax加载的页面上像在父页面上一样工作?为了让它更清晰,我的JS库添加在父页面中。在加载脚本中没有添加任何库。
jQuery插件能否在ajax页面上工作?此外,我不想在ajax页面中包含js库。
欢迎任何帮助...提前致谢...
5个回答

2
任何jQuery插件都可以在ajax加载的页面中使用。但是,如果您正在尝试在ajax加载的页面中调用它,则需要在ajax完成后调用插件。

你是指在回调函数中吗? - xmaestro
是的,你可以放置回调函数。或者如果你使用$.ajax(),你可以在success事件中调用它。 - Chamika Sandamal
你还应该查看$('x').live('event', fucntion() { // do something; });事件处理程序。它可以监听文档的变化,并将所有触发器绑定到主加载页面设置为新加载元素。 - devdRew

1

是的,它确实可以工作,但你必须在页面加载后初始化任何插件。例如,在使用.load()时:

$("#page").load("/page.php", function(response, status, xhr) {
    $('#selector-on-loaded-page').plugin();
});

您只需像往常一样在主页面中包含插件即可。


1
可能存在 jQuery 冲突,您可以像这样使用您的代码
var $jq = jQuery.NoConflict();
$jq("#page").load("/page.php", function(response, status, xhr) {
    $jq('#selector-on-loaded-page').plugin();
});

0

它应该可以工作,因为包含的js可以在加载的DOM和包含的js上使用。

然而,这取决于插件的工作方式以及您如何调用它。例如,如果它被动态应用onload或者您试图将其包装在主代码的$(document).ready()中,它很可能不起作用。

[编辑] 根据插件的文档

不要忘记再次应用插件,例如,您必须输入:

$("a[rel^='prettyPopin']").prettyPopin();

在你的.load()语句的回调函数中。


0

假设您正在使用插件“foo”如下:

$(".something").foo();

在 ajax 请求结束时(一旦您从 php 获取数据并创建新元素),重新编写相同的行 $(".something").foo();

另一种方法是找出如何将插件集成到您使用的方式中


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接