2012-07-03 17 views
7

Tôi đang cố gắng viết một hàm thay thế trong jQuery sẽ thay thế các từ cụ thể bằng html.thay thế văn bản thuần bằng html bằng cách sử dụng jQuery

Về cơ bản, tôi đang cố gắng thay thế thứ gì đó như [this] bằng <span class='myclass'> khi tài liệu được tải. Tôi đã xem xét một vài mẫu nhưng vài điều tôi thấy tôi không thể làm việc. Tôi vẫn đang học jQuery vì vậy tôi hy vọng một người nào đó có thể cho tôi một vài gợi ý như những gì để thử.

Xin cảm ơn trước, Steven.

HTML/văn bản:

[this]hello world![/this]​ 

JavaScript:

$(document).ready(function() {  
    // Using just replace 
    $("body").text().replace(/[this]/g,'<b>') 
});​ 

--EDIT--

Tôi đã thực hiện một vài thay đổi đối với chức năng sử dụng bản demo Nir của bên dưới. Heres thêm một vài chi tiết về những gì tôi đang làm. Tôi đang cố gắng thực hiện một phần nội tuyến, mà tôi đã có các lớp thích hợp và không được tạo ra. Nó hoạt động tốt khi trong html, nhưng khi tôi chạy hàm jQuery Nó dường như không hoạt động.

Rõ ràng các thẻ được thay thế, nhưng css của tôi không thực sự có vẻ hoạt động như tôi đã đề cập.

Heres một liên kết đến HTML HERE

và heres một liên kết đến jsfiddle HERE

$(document).ready(function() {  

// Using just replace 
var text = $('body').text(); 
$("body").html(text.replace(/\[math\]/g,'<span class="container">').replace(/\[\/math\]/g,'</span>')); 

var textt = $('body').text(); 
$("body").html(textt.replace(/\[top\]/g,'<div class="containme">').replace(/\[\/top\]/g,'</div>')); 

var textl = $('body').text(); 
$("body").html(textl.replace(/\[line\]/g,'<div class="borderme">&nbsp;</div>')); 

var textb = $('body').text(); 
$("body").html(textb.replace(/\[bot\]/g,'<div class="containme2">').replace(/\[\/bot\]/g,'</div>')); 
});​ 

HTML này

<span class="readme">Whats up, here's a fraction.&nbsp; 
<span class="container"> 
    <div class="containme">1</div> 
    <div class="borderme">&nbsp;</div> 
    <div class="containme2">2</div> 
    </span> 
&nbsp;&nbsp;Hello? Whats up, here's a fraction.&nbsp; 
    <span class="container"> 
    <div class="containme">1</div> 
    <div class="borderme">&nbsp;</div> 
    <div class="containme2">2</div> 
    </span> 
    &nbsp;&nbsp;Hello? Whats up, here's a fraction.&nbsp; 
    </span> 

để đánh dấu rút ngắn đáng này

<span class="readme"> Whats up, here's a fraction. [math][top]1[/top][line][bot]2[/bot][/math] </span> 
+0

Chuỗi bạn đang tìm kiếm ảnh hưởng như thế nào đến kết quả mong đợi? Và bạn chỉ cần chèn một thẻ mở? Còn thẻ đóng cho phần tử được chèn đó thì sao? –

+0

(a) Bạn đã không thiết lập fiddle của bạn để sử dụng jQuery (b) '.replace' trả về một chuỗi mới: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/replace –

Trả lời

6

javascript replace() trả về một chuỗi mới, nó không làm thay đổi chuỗi ban đầu, vì vậy nó có lẽ nên được:

$(document).ready(function() {  
    var content = $("body").text().replace(/\[this\]/g,'<b>') 
    $("body").html(content); 
});​ 

Chú ý rằng dấu ngoặc sẽ có để được thoát, nếu không nó sẽ thay thế mỗi ký tự bên trong dấu ngoặc đơn với <b>.

Đây là FIDDLE

+0

A [(cập nhật một chút) JS Fiddle] (http://jsfiddle.net/davidThomas/juTtG/20/) để tránh 'replace()' thứ hai trong liên kết-fiddle của bạn. –

+0

đây là một bản demo tuyệt vời, cảm ơn bạn rất nhiều. Tôi sẽ thực hiện một vài chỉnh sửa cho OP của tôi. tôi đã cố gắng để trả lời từ Nic trước khi tôi nhìn thấy bạn và, nó đã infact thay thế như thế nào tôi cần thiết, nhưng có vẻ như là mặc dù css của tôi không hoạt động đúng. bạn có thể xem bản trình diễn này để cho tôi một vài gợi ý không? http://jsfiddle.net/stevenschemers/juTtG/28/ – xxstevenxo

2

đây là một demo that uses regex:

$(document).ready(function() {  
    // Using just replace 
    var text = $('body').text(); 
    $("body").html(
     text.replace(/\[this\]/g,'<b>').replace(/\[\/this\]/g,'</b>') 
    ); 
}); 
+0

Xin vui lòng don không chỉ liên kết đến giải pháp, cũng bao gồm mã trong câu trả lời của bạn. Nếu các liên kết không khả dụng vì bất kỳ lý do gì, "câu trả lời" của bạn sẽ trở thành vô ích. –

+0

cảm ơn bạn đã giới thiệu bản demo. Tôi đã thêm một vài dòng khác trong nỗ lực để hoàn thành chức năng cho những gì tôi đang cố gắng để làm, và nó có vẻ như là mặc dù tôi đã phá vỡ nó: |. bạn sẽ quan tâm đến fiddle này? http://jsfiddle.net/stevenschemers/juTtG/24/ – xxstevenxo

+0

bạn đang cố gắng làm gì? – Nir