2010-10-12 86 views
1

我似乎无法在任何地方找到这个问题的答案,所以我在这里问。 我已经成功地使用的fancybox这样的:从函数打开jquery 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

做'警报(elementid)其地方,我想你会发现它是空的。 – 2010-10-12 14:53:18

+0

无需引用您的对象键(这不是JSON)。选择一种类型的报价(单或双)并且保持一致,而不是像你在这里做的那样进行混搭。 – 2010-10-12 14:58:34

+0

@尼克它不是空的。 @Matt我通常只使用单引号,为了测试目的我从各种例子中拷贝出来。关于对象键:谢谢我不知道这一点:-) – 0plus1 2010-10-12 15:09:01

回答

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

+0

你如何从href传递实际对象? – 0plus1 2010-10-12 15:38:51

+1

查看答案中的补充内容。 – 2010-10-13 06:33:08