
Προσπαθώ να χρησιμοποιήσετε `jQuery`για να διαμορφώσετε μπλοκ κώδικα, ειδικά για να προσθέσετε μια `<pre>`ετικέτα στο εσωτερικό του `<code>`tag:



```
$(document).ready(function() {
   $(code).wrapInner(<pre></pre>);
});

```

Firefox εφαρμόζει τη μορφοποίηση σωστά, αλλά IE βάζει όλο το μπλοκ κώδικα σε μία γραμμή. Αν μπορώ να προσθέσω μια ειδοποίηση 



```
alert($(code).html());

```

Βλέπω ότι η Ιρλανδία έχει τοποθετηθεί κάποιο επιπλέον κείμενο στο προ ετικέτα:



```
<PRE jQuery1218834632572=null>

```

Αν μου φορτώσετε ξανά τη σελίδα, ο αριθμός ακόλουθες αλλαγές jQuery.


Αν μπορώ να χρησιμοποιήσω `wrap()`αντί `wrapInner()`να τυλίξετε το `<pre>`έξω από την `<code>`ετικέτα, τόσο IE και Firefox να το χειριστεί σωστά. Αλλά δεν θα πρέπει να `<pre>`λειτουργούν *μέσα* `<code>` , καθώς;


Θα προτιμούσα να χρησιμοποιήσει `wrapInner()`, γιατί τότε μπορώ να προσθέσω μια κλάση CSS στην `<pre>`ετικέτα για να χειριστεί όλη τη μορφοποίηση, αλλά αν μπορώ να χρησιμοποιήσω `wrap()`, θα πρέπει να βάλετε τη σελίδα μορφοποίησης CSS στην `<pre>`ετικέτα και μορφοποίηση κειμένου / font στην `<code>`ετικέτα, ή το Firefox και IE τόσο πνίξει. Δεν είναι μια τεράστια συμφωνία, αλλά θα ήθελα να το κρατήσει όσο το δυνατόν απλούστερη.


Έχει κάποιος άλλος που αντιμετωπίζουν αυτό; Είμαι λείπει κάτι;

 
Πώς μπορώ να προσθέσω ένα προ ετικέτα μέσα σε ένα tag κώδικα με jQuery;
=======================================================================



Αυτή είναι η διαφορά μεταξύ του [μπλοκ και ενσωματωμένα](http://www.w3.org/TR/html4/struct/global.html#h-7.5.3) στοιχεία. [`pre`είναι ένα στοιχείο επίπεδο μπλοκ](http://www.w3.org/TR/html4/sgml/dtd.html#block) . Δεν είναι νόμιμο να το βάλετε μέσα σε ένα `code`tag, το οποίο [μπορεί να περιέχει μόνο inline περιεχόμενο](http://www.w3.org/TR/html4/struct/text.html#h-9.2.1) .


Επειδή τα προγράμματα περιήγησης πρέπει να υποστηρίζει ό, τι godawful ετικέτα σούπα θα μπορούσαν να βρουν στην πραγματική διαδίκτυο, Firefox προσπαθεί να κάνει ό, τι εννοείτε. IE συμβαίνει να το χειριστεί διαφορετικά, η οποία είναι λεπτή από το spec? συμπεριφορά σε αυτή την περίπτωση είναι απροσδιόριστη, γιατί δεν πρέπει ποτέ να συμβεί.


* Θα μπορούσατε να αντί να *αντικαταστήσετε* το `code`στοιχείο με το `pre`; (Λόγω της έκδοσης μπλοκ / inline, τεχνικά που θα πρέπει να λειτουργήσει μόνο εάν τα στοιχεία είναι μέσα σε [ένα στοιχείο με περιεχόμενο «ροή»](http://www.w3.org/TR/html4/sgml/dtd.html#flow) , αλλά τα προγράμματα περιήγησης μπορεί να κάνει ό, τι θέλετε έτσι κι αλλιώς.)
* Γιατί είναι ένα `code`στοιχείο στην πρώτη θέση, αν θέλετε `pre`«s συμπεριφορά;
* Θα μπορούσατε επίσης να δώσει το `code`στοιχείο `pre`κενό «s διατήρηση της εξουσίας με το CSS [`white-space: pre`](http://www.blooberry.com/indexdot/css/properties/text/whitespace.htm), αλλά προφανώς [IE 6 τιμά μόνο ότι Αυστηρή λειτουργία](http://www.quirksmode.org/css/whitespace.html) .

 

Χρησιμοποιείτε την πιο πρόσφατη jQuery; Τι και αν προσπαθείτε



```
$("code").wrapInner(document.createElement("pre"));

```

Είναι κάτι καλύτερο ή μπορείτε να πάρετε το ίδιο αποτέλεσμα;

 

Btw δεν ξέρω αν έχει σχέση, αλλά προ ετικέτες στο εσωτερικό ετικέτες κώδικα δεν θα επικυρώσει το αυστηρό τρόπο.

 

Όπως αναφέρεται markpasc, το PRE στοιχείο στο εσωτερικό ΚΩΔΙΚΟΣ στοιχείο δεν επιτρέπεται σε μορφή HTML. Η καλύτερη λύση είναι να αλλάξετε τον κώδικα HTML σας για να χρησιμοποιήσετε <pre> <code> (που σημαίνει ένα ήδη διαμορφωμένες μπλοκ που περιέχει κώδικα) απευθείας στο HTML σας για τμήματα κώδικα.

 

Θα μπορούσατε να χρησιμοποιήσετε HTML () για να το τυλίξετε:



```
$('code').each(function(i,e)
{
    var self = $(e);
    self.html('<pre>' + self.html() + '</pre>');
});

```

Όπως αναφέρθηκε παραπάνω, τότε θα ήταν καλύτερα να αλλάζει html σας. Αλλά αυτή η λύση θα πρέπει να εργαστεί.

 