Вызов Colorbox с динамически созданными селекторами - PullRequest
0 голосов
/ 15 марта 2011

Я получаю сообщение об ошибке при динамическом создании 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 открытых оверлея, один хороший и один сломанный.

! Когда я жестко закодировал селекторы (имя идентификатора), как так ...., это работает.

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

Что здесь за гонг??

EDIT:

Я делаю это в серебрянной полосе cms

javascript (noconflict) генерируется в Controller :: init ()

 Requirements::customScript('

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

Материал HTML находится в представлении.

* SilverStripe основан на парадигме MVC.

1 Ответ

0 голосов
/ 18 апреля 2011

Ваша проблема в том, что вы пытаетесь получить доступ к $ this-> AddURLSegment из Controller :: init (). Метод AddURLSegment недоступен в классе контроллера. Вы должны назвать это в подклассе контроллера. Большинство страниц SilverStripe выглядят так:

Страница расширяет SiteTree { }

Page_Controller расширяет ContentController { public init () { Требования :: customScript (...); } }

Итак, добавьте customScript в контроллер того типа страниц, который вы используете. Это должно заставить его работать.

...