2012-05-04 39 views
5

Dưới đây là những gì tôi đang cố gắng để làmLàm thế nào để bọc một phần của văn bản với các nhịp bằng cách sử dụng jQuery?

Fox<span>Rox</span> 

trước đó

FoxRox 

Làm thế nào để quấn xung quanh nhịp Rox?

+0

Nếu bạn có thể cho chúng tôi biết tại sao bạn cần nó và một số bối cảnh nhiều hơn chúng tôi sẽ có thể giúp bạn nhiều hơn nữa. Thực hiện như là một lời khuyên cho các câu hỏi thêm ở đây. – gdoron

Trả lời

5

này sẽ tìm kiếm bạn cả DOM và thay thế mỗi Rox với <span>Rox</span>:

$(':contains("Rox")').html(function(index, oldHTML) { 
    return oldHTML.replace(/(Rox)/g, '<span>$&</span>'); 
});​ 

Live DEMO

+0

Tôi cũng nhận được mã thông báo không mong muốn ILLEGAL :( – PhoxKiD

+0

@gdoron Tôi nhận được một số kết quả kỳ lạ - có thể là lỗi của jsbin – Sampson

+1

@gdoron Chỉ cần thử mọi thứ trong jsfiddle và nó hoạt động tốt. – Sampson

5

Trong trường hợp này, bạn có thể sử dụng phương thức hoạt Javascript replace():

'FoxRox'.replace(/(Rox)/, '<span>$1</span>'); 

Để thay thế tất cả điều này thông qua các tài liệu, bạn có thể thử như sau:

$(":contains('Rox')").html(function(i,o){ 
    return o.replace(/(Rox)/g, '<span>$1</span>'); 
});​ 

Lưu ý, nếu hạn của bạn là không phải "Rox", bạn sẽ cần phải thay đổi nó trong kịch bản trên.

+0

Tôi đoán điều khó khăn là làm thế nào để thay đổi DOM. – gdoron

+0

Vui lòng kiểm tra các trang web của tôi mà tôi đang làm việc ngay bây giờ, http://www.foxklld.site88.net. Tôi dán mã của bạn nhưng nó mang lại cho tôi một số loại lỗi và cũng rằng tôi muốn thay thế 'KllD' với' Rox' bạn sẽ thấy những gì tôi có ý nghĩa. Vì vậy, tôi muốn một cái gì đó như thế này ''FoxKllD'.replace (/ (KllD) /,' Rox '); Ngoài ra, trên bảng điều khiển chrome, nó cho biết mã thông báo không mong muốn ILLEGAL. – PhoxKiD

+0

@ user1374078 Nhưng bạn muốn thay thế tất cả trong tài liệu của mình, phải không? – Sampson

Các vấn đề liên quan