2009-09-03 3 views
4

Можно создать дубликат:
jquery load issueСинтаксисHighlighter.all() не работает на уровне DOM?

Я загрузка содержимого динамически в DIV с помощью нагрузки JQuery() функции. В обратном вызове я вызываю SyntaxHighlighter.all(), , чтобы печатать синтаксис предварительного блока, который только что загрузился в div.

Проблема заключается в том, что содержимое загружается нормально, но синтаксис не выделяется. Однако, когда я жестко задал pre-блок в div, чтобы не загружать в DOM через функцию jquery load(), синтаксис get выделяется как следует.

Итак, я предполагаю, что SyntaxHighlighter.all() работает только с предварительными блоками, которые находятся в источнике html, которые можно просмотреть с использованием источника страницы просмотра, а не на фактическом содержимом в DOM?

Любая идея, как я могу заставить ее работать?

Javascript, чтобы сделать загрузку и выделение:

<script type="text/javascript"> 
     $.ajaxSetup ({ 
      cache: false 
     }); 

     $(document).ready(function() { 
      var tree = $("#tree li"); 
      var contentContainer = $("#contentContainer"); 
      var content = $("#content"); 

      SyntaxHighlighter.config.clipboardSwf = 'syntaxhighlighter_2.0.320/scripts/clipboard.swf'; 
      SyntaxHighlighter.all(); 

      // Treeview 
      $("#tree").treeview({ 
       persist: "location", 
       collapsed: true 
      }); 

      tree.click(function() { 
       if ($(this).hasClass("file")) { 
        tree.removeClass("selected"); 
        $(this).addClass("selected"); 
        content.load("content/"+this.id+".html", function() { 
         contentContainer.effect("highlight"); 
         SyntaxHighlighter.all(); 
        }); 
       } 
      }); 
     }); 
    </script> 

содержание DIV:

<div id="content"> 
       <pre class="brush: java;"> 
/** 
* The HelloWorldApp class implements an application that 
* simply prints "Hello World!" to standard output. 
*/ 
class HelloWorldApp { 
    public static void main(String[] args) { 
     System.out.println("Hello World!"); // Display the string. 
    } 
} 
       </pre> 
      </div> 

внешний файл, который загружается с jQuery.load():

Hello World 

<pre class="brush: java;"> 
/** 
* The HelloWorldApp class implements an application that 
* simply prints "Hello World!" to standard output. 
*/ 
class HelloWorldApp { 
    public static void main(String[] args) { 
     System.out.println("Hello World!"); // Display the string. 
    } 
} 
</pre> 

С уважением

+0

http://alexgorbatchev.com/wiki - SyntaxHighlighter? Кроме того, можете ли вы показать код, который вы используете для загрузки элемента, а затем выделить? – gnarf

+0

Да, это тот. Я отредактировал исходный вопрос с информацией, которую вы просили. – nkr1pt

+1

Dup: http://stackoverflow.com/questions/1370738/jquery-load-issue –

ответ

0
  1. сделать элемент скрытый с помощью CSS (дисплей: нет)
  2. Добавить элемент на страницу
  3. вызова SyntaxHighlighter.all()
  4. Когда вы будете готовы сделать его видимым, удалите CSS или класс что спрятало его.
+1

извините, не имеет значения – nkr1pt

Смежные вопросы