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