2017-12-21 111 views
7

Có thể một số người cung cấp cho tôi một số hướng dẫn về cách tốt nhất để làm điều này.Nhận văn bản sau phần tử nhất định (JavaScript hoặc JQuery)

Tôi đang cố gắng để có được tất cả các văn bản đó là sau khi ".main"

Tôi biết điều này có thể là đơn giản, nhưng nó được chọn tại bộ não của tôi cả ngày ngay trước Giáng sinh. Vì vậy, tôi nghĩ thay vì nhấn mạnh bản thân mình ra, tôi sẽ tìm một số hướng dẫn.

Đoạn mã ví dụ chỉ mang lại Text in P tag nhưng tôi muốn mang lại Text not in it's own elementp tag

các

console.log($("#container").find(".main").next().text());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div id="container"> 
 
    <div class="main"> WOOP IN MAIN </div> 
 
    Text not in it's own element 
 
    <p> Text in P tag </p> 
 
</div>

+0

DOM có bất biến trong trường hợp này không? –

Trả lời

6

Đó là vì Text not in it's own element được coi là một text nút, do đó next() sẽ nhắm mục tiêu thẻ <p/>, là rằng nó là một HTMLElement. Nếu bạn đã đi tự nhiên bạn muốn sử dụng một sự kết hợp của nextSibling, đó là thuyết bất khả tri của hai loại nút và nextElementSibling, mà như nó tên phương pháp ngụ ý, lấy tiếp theo anh chị em yếu tố:

const main = document.querySelector('.main'); 
 

 
const txt = [ 
 
    main.nextSibling.textContent.trim(), 
 
    main.nextElementSibling.textContent.trim() 
 
]; 
 

 
console.log(txt)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div id="container"> 
 
    <div class="main"> WOOP IN MAIN </div> 
 
    Text not in it's own element 
 
    <p> Text in P tag </p> 
 
</div>

+1

tại sao bạn sử dụng 'const'? đây có phải là một số thời trang mới để không thích 'var' bây giờ không? – vsync

+0

Khi sử dụng 'var' bạn có nguy cơ bị trục kéo không mong muốn và/hoặc tái chỉ định. Ngày đầu các biến Javascript này được nhập động, điều này cũng có thể dẫn đến hành vi không mong muốn. Cách tốt nhất để sử dụng 'const' ở bất kỳ nơi nào có thể áp dụng. Không * không thích * đối với 'var'. Chỉ là vấn đề giữ mã ít nhất là dự đoán được. –

+0

@CarlEdwards sau đó bạn sẽ điều chỉnh điều này như thế nào để xóa văn bản? –

8

Cách đơn giản nhất để đạt được điều này là để clone() container, loại bỏ phần tử .main từ đó, sau đó lấy số text(), như sau:

var text = $("#container").clone().find('.main').remove().end().text(); 
 
console.log(text.trim());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div id="container"> 
 
    <div class="main"> WOOP IN MAIN </div> 
 
    Text not in it's own element 
 
    <p> Text in P tag </p> 
 
</div>

Hoặc bạn có thể đệ quy đi qua thông qua các nút DOM mà theo các yếu tố .main, nhưng điều này là phức tạp hơn nhiều và đưa ra kết quả tương tự.

+0

Bạn gosh dang đánh tôi với nó. –

+0

Bạn thiên tài Rory! :) cảm ơn vì đã giúp tôi. Tôi đã nhấn mạnh bản thân mình ngay trước Giáng sinh. –

+1

Giải pháp tốt, nhưng hãy lưu ý rằng khi bạn có nội dung trong div vùng chứa TRƯỚC KHI nó sẽ được hiển thị quá. @Carl Edwards câu trả lời không có ràng buộc này – BananasSplitter

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