2011-07-14 50 views
14

Tôi có một kịch bản tạo ra một danh sách các mục có cấu trúc như thế này:Làm thế nào để loại bỏ văn bản bên trong một phần tử với jQuery?

<li> 
    <div>Some stuff</div> 
    <a href="http://www.mysite.com/">New Item</a> 
    (1 vote) 
</li> 

tôi đã tự hỏi nếu có một cách để loại bỏ tất cả mọi thứ bên ngoài <div><a> thẻ, trong trường hợp này (1 vote) string, với jQuery hoặc javascript thông thường.

Cảm ơn trước!

+1

này có mọi thứ bạn muốn: http://stackoverflow.com/questions/298750/how-do-i-select-text-nodes-with-jquery – benhowdle89

Trả lời

24

này nên làm việc.

$("li").contents().filter(function(){ return this.nodeType != 1; }).remove(); 

hoặc bằng cách xác định văn bản các nút một cách rõ ràng

$("li").contents().filter(function(){ return this.nodeType == 3; }).remove(); 

Xem fiddle này.

+4

Cảm ơn! Tôi kết thúc bằng cách sử dụng '$ ('ul li'). contents(). filter (function() { trả về this.nodeType == Node.TEXT_NODE; }). Remove(); ' – javiervd

+0

khá hữu ích, cảm ơn! – ithil

1

Sử dụng jquery của nextAll

+0

Không may mắn :(Tôi nghĩ nó vì văn bản không thực sự là một phần tử mà chỉ là văn bản ở đó .Tôi đã sử dụng '$ ('ul li a'). nextAll(). remove();' – javiervd

+0

Xin lỗi, tôi đã bỏ lỡ nó chỉ dành cho các yếu tố tiếp theo cùng loại (http: // sandbox.phpcode.eu/g/d18fc.php) – genesis

0
$('li').not('div,a').text('') 

Hãy thử điều này, chưa được kiểm tra

Sửa

$('li').contents().filter(function(){ return !(this.tagName == 'DIV' 
              || this.tagName == 'A');}).remove(); 
+0

Không, nó không hoạt động: http://sandbox.phpcode.eu/g/-247fd6d2e7667cb8732e56d5043f96db.php – genesis

+0

Không may mắn :(nó có ý nghĩa mặc dù – javiervd

0
$('li').html($(this).children()) 

Bạn có thể thử điều này, nó sẽ hoạt động. Sạch sẽ và dễ dàng.

+0

Ý tưởng thú vị nhưng html chỉ mất một chuỗi. Bạn có thể làm '.empty(). Chắp thêm (con)' nhưng bạn sẽ phải lưu trữ các con trước khi bạn làm điều đó – megawac

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