2011-09-14 40 views
5

Làm thế nào tôi có thể cắt tất cả các không gian từ một chuỗi, ngay cả khi họ được gây ra bởi một tổ chức phi phá vỡ không gian ( )Cắt trang trí không xóa  ?

Ví dụ:

var foo = $.trim($('<p>&nbsp;foo&nbsp;</p>').text()); 

Giá trị của foo là " foo " thay vì "foo"

CẬP NHẬT Vì vậy, vấn đề không phải là chức năng cắt của jQuery. Nó hoạt động tuyệt vời. Vấn đề là chức năng cắt của MSAjax. jQuery, đúng, sử dụng chức năng phát hiện và nếu chúng không tồn tại, hãy sử dụng nó.

Thật không may, việc triển khai trim của MSAJax không loại bỏ char 160 (khoảng trống không phá vỡ). Tuy nhiên, jQuery regex trim hiện, vì nó nhận ra rằng IE không bao gồm char 160 trong \ s.

Tại sao các vấn đề về trình duyệt ngu ngốc luôn là kết thúc là một vấn đề với cách M $ thực hiện điều gì đó ???

+1

Làm việc cho tôi: http://jsfiddle.net/uR9WA/ –

+0

Trông giống như một lỗi trong 1.3.x - http://bugs.jquery.com/ticket/4980 –

Trả lời

3

Vì vậy, vấn đề không phải là chức năng cắt của jQuery. Nó hoạt động tuyệt vời. Vấn đề là chức năng cắt của MSAjax. jQuery, đúng, sử dụng chức năng phát hiện và nếu chúng không tồn tại, hãy sử dụng nó.

Thật không may, việc triển khai trim của MSAJax không loại bỏ char 160 (khoảng trống không phá vỡ). Tuy nhiên, jQuery regex trim hiện, vì nó nhận ra rằng IE không bao gồm char 160 trong \ s.

Tại sao các sự cố trình duyệt ngu ngốc luôn luôn là vấn đề với cách M $ triển khai thứ gì đó ???

+1

Thiên Chúa tôi ghét IE ..... – Liam

+0

Có cách nào để bỏ qua việc thực hiện M $ và buộc trang trí của jQuery không? – jbyrd

1

Bạn có chắc chắn về điều đó không? Tôi đã thử phiên bản được sửa đổi một chút của đoạn mã của bạn ngay bây giờ:

var foo = $.trim($('<p>&nbsp;foo&nbsp;</p>').text()); 
alert('#' + foo + '#'); 

và không có khoảng trắng ở hai bên 'foo'. http://jsfiddle.net/Ux7Wc/

này đã được sử dụng jQuery 1.6.2 trong Firefox 5.

+0

Tôi không còn chắc chắn nữa .. Nó không làm việc trong mã, và tôi đang xem xét các giá trị trong trình gỡ lỗi và đây là những gì dường như đang xảy ra. Nhưng trong jsfiddle tôi không thể sao chép vấn đề – CaffGeek

+0

Vấn đề là cắt gốc của IE (mà jquery sử dụng nếu nó tồn tại) không loại bỏ char 160, đó là điều gì được chuyển đổi quá – CaffGeek

+0

Hiệu chỉnh, nó không phải là bản gốc của IE, nhưng Chức năng cắt MSAjax – CaffGeek