2010-03-23 42 views
10

Tôi đang cố gắng gọi hàm jQuery text() và chạy nó qua chức năng trim() để xóa tất cả dấu cách và khoảng trắng đầu. Dường như làm việc tuyệt vời trong Firefox, tuy nhiên, không hoạt động trong IE7 (từ chối loại bỏ dấu cách ở cuối).Chức năng cắt jQuery không hoạt động trong IE7?

Bất kỳ ý tưởng nào ?! Có lẽ một giải pháp regex?

+0

Bạn có thể hiển thị bản trình diễn không? – SLaks

Trả lời

5

Vì vậy, đây là ý chính của những gì đang diễn ra. Tôi đã có một số văn bản trong một yếu tố span và sau đó văn bản có một siêu liên kết/hình ảnh người dùng có thể nhấp vào để loại bỏ các văn bản từ dòng nó được trên (xem mã dưới đây). Tuy nhiên, tôi đã đặt   sau văn bản phần tử span (trong văn bản của siêu liên kết) để đặt một chút đệm giữa văn bản span và hình ảnh "xóa". Vì vậy, mặc dù tôi đã truy cập vào văn bản của phần tử và cắt tỉa $.trim($(this).parent().text()); nó vẫn sẽ bao gồm không gian đó ở cuối! Khi tôi đã xóa không gian thừa này, mọi thứ hoạt động tốt. Vẫn không có ý tưởng tại sao $.trim() sẽ không chăm sóc nó mặc dù ?!

<div> 
    <span> 
    <strong>SomeText</strong> 
    </span> 
    <a href="javascript:void(0);" onclick="removeMe();">&nbsp; 
    <img src="delete.png" width="15" height="15" border="0" name="imgRemove" /> 
    </a> 
</div> 
+3

tên người dùng của bạn là soooooooooooooooooooo tấn công –

+0

nó không hoạt động, bởi vì '$ .trim' tìm các khoảng trắng thực tế không bao gồm'   'là một không gian mã hóa không phanh, theo như'. trim' là có liên quan nó nghĩ rằng nó chỉ là một văn bản như 'Home' hoặc 'Tom & jerry' hy vọng nó sẽ giúp – Val

0

Có tôi có ý tưởng. Khoảng trắng ở cuối không nằm trong phần tử mà bạn đang gọi hàm text() của bạn trên đó. Điều này có thể xảy ra trong IE bởi vì nó xử lý khoảng trắng khác nhau sau đó firefox, và sẽ cung cấp cho nó các phần tử riêng của nó, nơi mà firefox sẽ không. Đây chỉ là một linh cảm, bởi vì câu hỏi của bạn không cung cấp cho nhiều để đi về.

+1

Điều này không có ý nghĩa. Đó là một chuỗi đơn giản - nguồn gốc của khoảng trắng không liên quan. – SLaks

+0

không, nó sẽ không có ý nghĩa nếu trim didnt làm việc trên một chuỗi, một regex đơn giản của nó, nó sẽ làm việc. – mkoryak

+0

Tôi nghĩ rằng một văn bản trả về một chuỗi không phải là các nút/yếu tố mà bạn đang đề cập đến trừ khi anh ta đã sử dụng html thay vì văn bản lol câu trả lời là không thích hợp – Val

21

bạn có lẽ hầu hết đã quên về jquery chainning ...

thử này

$('#selector').trim($('#selector').text())

đừng lười biếng với

$('#selector').text().trim();//this is wrong...

EDIT

hoặc như @Laserson đã đơn giản hóa nó thậm chí còn tốt hơn, với $.trim($(selector).text());

+0

Nếu tôi chọn không chính xác, điều đó giải thích tại sao điều này sẽ hoạt động trong Firefox, nhưng không có trong IE? – YourMomzThaBomb

+0

có lẽ u nên cập nhật câu trả lời của bạn với một ví dụ về kịch bản, nó chỉ là một gợi ý, như vấn đề ie7 của bạn ... hoặc sử dụng một câu lệnh if với một substr (-1,1) để kiểm tra xem chữ cái cuối cùng là một không gian trắng – Val

+7

Dễ dàng hơn: $ .trim() – Laserson

0

jquery sử dụng/^ \ s + | \ s +/g trong trang trí của nó phương pháp luận

Bất kỳ không gian dấu sẽ phải được thêm vào sau khi nó trả về .

Nó có thể phụ thuộc vào thời điểm bạn đọc - cố gắng cảnh báo giá trị trực tiếp từ thao tác cắt. Nếu điều đó đọc chính xác, không gian đang được thêm vào bởi bất cứ điều gì bạn làm bên cạnh chuỗi.

Nếu cắt thực sự trả về bằng dấu cách, hãy sử dụng text.replace (/^\ s + | \ s +/g, '').

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