plone4:打开覆盖 ajax 内容 w/o 绑定到点击

plone4: open overlay with ajax content w/o binding to click

$('.selector').prepOverlay() from plone.app.jquerytools 将弹出窗口绑定到 'onClick' 并从 href/src/rel 属性之一提供的 url 加载其内容时工作正常.

<a class=".selector" href="link/to/@@view">link</a>

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

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

            // show Overlay

        }
    }
});

我目前为显示叠加层所做的工作是:

创建一个 link 项目,将叠加层绑定到它并打开它

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

link.prepOverlay({
    subtype:'ajax',
});
link.click();

但是,这会导致两次请求“/@@my-popup”

是否有更好的方法将任意内容添加到使用 prepOverlay 创建的叠加层中?

不,不幸的是没有。

如果仔细观察 prepOverlay 函数,您会看到以下行:

// 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 属性,您将无法触发叠加层。

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

Plone 的 prepOverlay 的唯一真正目的是自动将链接或图像转换为简单的 jquerytools 覆盖。在你的情况下,它只是妨碍了。所以,不要使用 prepOverlay。直接用jquerytools' overlay facility.

就可以了