Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript plone4:打开ajax内容的覆盖,不绑定以单击_Javascript_Plone_Jquery Tools - Fatal编程技术网

Javascript plone4:打开ajax内容的覆盖,不绑定以单击

Javascript plone4:打开ajax内容的覆盖,不绑定以单击,javascript,plone,jquery-tools,Javascript,Plone,Jquery Tools,当将弹出窗口绑定到“onClick”并从href/src/rel属性之一提供的url加载其内容时,plone.app.jquerytools中的$('.selector').prepOverlay() 我有一个用例,通过ajax手动加载我的内容,检查它是否满足某些条件,如果满足这些条件,我希望在覆盖中显示ajax请求返回的内容: jQuery.ajax({ type: 'GET', url: portal_url + '/@@my-popup', success: fu

当将弹出窗口绑定到“onClick”并从href/src/rel属性之一提供的url加载其内容时,
plone.app.jquerytools
中的
$('.selector').prepOverlay()

我有一个用例,通过ajax手动加载我的内容,检查它是否满足某些条件,如果满足这些条件,我希望在覆盖中显示ajax请求返回的内容:

jQuery.ajax({
    type: 'GET',
    url: portal_url + '/@@my-popup',
    success: function(r) {
        if (r != '') {

            // show Overlay

        }
    }
});
我当前显示覆盖图的操作是:

创建链接项,将覆盖绑定到它并打开它

var link = $('<a href="' + portal_url + '/@@my-popup"></a>')

link.prepOverlay({
    subtype:'ajax',
});
link.click();
var link=$(“”)
link.prepreverlay({
子类型:'ajax',
});
link.click();
但是,这会导致对“/@@my popup”的两个请求


有没有更好的方法将任意内容放入使用PrePreverlay创建的覆盖中?

没有,不幸的是没有

如果更靠近
preverlay
函数,您会看到以下行:

// be promiscuous, pick up the url from
// href, src or action attributes
src = o.attr('href') || o.attr('src') || o.attr('action');
这意味着如果没有带有href、src或action属性的元素,就无法触发覆盖


您可以编写自己的prepreverlay方法,它不迭代某些元素,而是将特定的url作为参数。

Plone的prepreverlay的唯一真正目的是将链接或图像自动转换为简单的jquerytools覆盖。对你来说,这只是个障碍。所以,不要使用prepreverlay。直接使用。

这也是我学到的。但是,直接使用它需要从PreOverlay复制大量代码,以便为弹出窗口获得相同的标记。。并使其与我为PreOverlay弹出窗口注册的自定义事件兼容。(pbo.create\u content\u div方法在overlayhelper.js之外不可用)感谢您的回复。这也是一个有效的选择。事实上,这可能比直接使用jquertools覆盖要好,因为我的弹出窗口具有相同的外观,并且我可以重用其他弹出窗口使用的事件处理程序)