从函数中打开Jquery fancybox

时间:2010-10-12 14:48:37

标签: javascript jquery fancybox

我无法在任何地方找到这个问题的答案,所以我在这里问。 我已经成功使用了像这样的fancybox:

$("#editor").fancybox({
            'width' : 1000,
            'height' : 600,
            'autoDimensions' : false,
            'autoScale' : false,
            'ajax' : {
                type : "POST",
                data : varstring
            }
        })

现在的问题是,由于新的必需品,varstring必须包含应该打开fancybox窗口的每个链接的唯一数据。 我想象的方式是这样的:

function openEditor(elementid,sid,pid,gid){
    $("#"+elementid).fancybox({
            'width' : 1000,
            'height' : 600,
            'autoDimensions' : false,
            'autoScale' : false,
            'ajax' : {
                type : "POST",
                data : 'varstringnotimplemented'
            }
        });
    //$("#"+elementid).trigger('click');
    return false;
}

它不起作用,如果我取消注释触发器,我会得到:

uncaught exception: Syntax error, unrecognized expression: #

即使我设法让这件事工作也很难看,有没有更好的方法呢?

谢谢

1 个答案:

答案 0 :(得分:3)

最好传递实际对象而不是id。

function openEditor(element,sid,pid,gid){
    var $element = $(element);
    var dataString = '??';
    var ajaxSettings = {
                type : "POST",
                data : dataString
            };

    $element.fancybox({
            'width' : 1000,
            'height' : 600,
            'autoDimensions' : false,
            'autoScale' : false,
            'ajax' : ajaxSettings 
        });
    $element.trigger('click');
    return false;
}

链接将是

<a href="javascript:void(0);" onclick="openEditor(this,'some','other','params')">text</a>

如果您通过href发送它,则无法传递实际对象,您可以通过onclick发送它