2016-02-18 38 views
1

我使用ajax來獲取外部文件的內容,然後從字符串中獲取一個元素並使用jQuery的find()將其加載到我的頁面上的元素中。這很好,但現在我需要從外部文件中獲取一個元素和另一個元素之間的所有內容,我試過使用.nextUntil(),但它並沒有停留在正確的元素上,而是抓住了整個文檔的其餘部分。所以問題是,我可以這樣做,還是有另一種方式我應該這樣做?jQuery .find和.nextUntil一起

... 
success: function(result) { 
    html = $(result), 
     comp = $(html).find("#comp1").nextUntil(".comp-close"); 
    $('.output-text').html(comp); 
}, 
... 
+0

這聽起來像是你在'nextUntil()'中使用了錯誤的選擇器,如果第一部分工作正常,可能仔細檢查'.comp-close'實際上是初始元素的兄弟? –

+0

另外,在ID上做一個.find,直到可能不好,因爲ID在文檔中應該是唯一的。所以你永遠不會找到不止一個。 – cngodles

+0

你可以給我們一個JSFiddle嗎? – phenxd

回答

1

你的問題可能是「.comp關閉」不是直接的兄弟姐妹。

我這裏證實了這一現象:

<div id="1"></div> 
<p>1</p> 
<p>2</p> 
<p>3</p> 
<div> 
    <p>4</p> 
    <div id="2"></div> 
    <p>5</p> 
</div> 
<div id="3"></div> 
<p>6</p> 

<p>=====</p> 
<div id="4"></div> 

// Clones until the end of the document 
//var list = $('#1').nextUntil("#2"); 

// Clones until #3 since it is a direct sibling 
var list = $('#1').nextUntil("#3"); 

console.log(list) 

// Clone if you do not want to remove the originals from the DOM 
$('#4').append(list.clone()); 

JSFiddle

還要注意的是,你應該使用的clone()如果你不想修改DOM。

希望這有助於!