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

ψήφοι
8

Προσπαθώ να χρησιμοποιήσετε 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 τόσο πνίξει. Δεν είναι μια τεράστια συμφωνία, αλλά θα ήθελα να το κρατήσει όσο το δυνατόν απλούστερη.

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

Δημοσιεύθηκε 15/08/2008 στις 22:35
πηγή χρήστη
Σε άλλες γλώσσες...                            


5 απαντήσεις

ψήφοι
1

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

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

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

Απαντήθηκε 15/08/2008 στις 22:50
πηγή χρήστη

ψήφοι
3

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

Απαντήθηκε 15/08/2008 στις 22:56
πηγή χρήστη

ψήφοι
11

Αυτή είναι η διαφορά μεταξύ του μπλοκ και ενσωματωμένα στοιχεία. preείναι ένα στοιχείο επίπεδο μπλοκ . Δεν είναι νόμιμο να το βάλετε μέσα σε ένα codetag, το οποίο μπορεί να περιέχει μόνο inline περιεχόμενο .

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

  • Θα μπορούσατε να αντί να αντικαταστήσετε το codeστοιχείο με το pre; (Λόγω της έκδοσης μπλοκ / inline, τεχνικά που θα πρέπει να λειτουργήσει μόνο εάν τα στοιχεία είναι μέσα σε ένα στοιχείο με περιεχόμενο «ροή» , αλλά τα προγράμματα περιήγησης μπορεί να κάνει ό, τι θέλετε έτσι κι αλλιώς.)
  • Γιατί είναι ένα codeστοιχείο στην πρώτη θέση, αν θέλετε pre«s συμπεριφορά;
  • Θα μπορούσατε επίσης να δώσει το codeστοιχείο preκενό «s διατήρηση της εξουσίας με το CSS white-space: pre, αλλά προφανώς IE 6 τιμά μόνο ότι Αυστηρή λειτουργία .
Απαντήθηκε 16/08/2008 στις 05:04
πηγή χρήστη

ψήφοι
1

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

Απαντήθηκε 18/08/2008 στις 13:13
πηγή χρήστη

ψήφοι
1

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

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

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

Απαντήθηκε 18/08/2011 στις 15:21
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more