2011-03-14 55 views
0

动态生成JavaScript的时候,像这样我得到错误:彩盒调用与动态创建的选择

$(document).ready(function(){ 
    $("#$this->AddURLSegment").colorbox(); 
} 

HTML:

<a href="<?php echo $AddURLSegment;?>?width=500&height=500&iframe=false" id="<?php rcho $AddURLSegment;?>">Add</a> 

错误:

uncaught exception: Syntax error, unrecognized expression: # 
: 上添加第一个点击

第二次:

ab.html(a.close).show is not a function 
uncaught exception: Syntax error, unrecognized expression: # 

和2个叠加打开,一个好,一个坏了。

!当我硬编码选择器(ID名称)像这样....,它的作品。

$("#add").colorbox(); 

这是什么锣!

编辑:

林在silverstripe CMS

的JavaScript(noconflict)在控制器初始化::生成()

Requirements::customScript(' 

      $j(document).ready(function(){ 
       $j("#'.$this->AddURLSegment.'").colorbox(); 
      }); 
'); 

html的东西是在查看这样做。

* SilverStripe基于MVC范例。

+0

你注入JavaScript与JavaScript?发布更多的'$(“#$ this'段的周边代码 – 2011-03-14 22:04:28

回答

0

你的问题是你试图从Controller :: init()中访问$ this-> AddURLSegment。 AddURLSegment方法在控制器类中不可用。你需要在控制器的子类中调用它。大多数SilverStripe页面看起来就像这样:

页扩展SiteTree {}

Page_Controller延伸ContentController { 公众的init(){ 要求:: customScript(...); }}

因此,添加customScript到您正在使用的页面类型的控制器。这应该使它工作。

+0

是的,这一切都是在SomePageType :: init()内完成的,并且当我查看html源代码时,我得到了生成的JS。 – 2011-04-18 11:29:59