2017-06-06 48 views
0

jQuery的.find()方法 - 字符串中搜索轉換爲jQuery對象

var myHTML = '<div class="mapInfoWindow"><p class="infoWindowParagraph">DATA HERE</p><p class="infoWindowParagraph">DATA HERE</p><p class="infoWindowParagraph">DATA HERE</p><p class="infoWindowParagraph">DATA HERE</p></div><div class="mapInfoWindow"><p class="infoWindowParagraph">DATA HERE</p><p class="infoWindowParagraph">DATA HERE</p><p class="infoWindowParagraph">DATA HERE</p><p class="infoWindowParagraph">DATA HERE</p></div><div class="mapInfoWindow"><p class="infoWindowParagraph">DATA HERE</p><p class="infoWindowParagraph">DATA HERE</p><p class="infoWindowParagraph">DATA HERE</p><p class="infoWindowParagraph">DATA HERE</p></div>'; 
 

 
var obj = $(myHTML).get(0); 
 
var totalCount = $(obj).find('.infoWindowParagraph').length; 
 

 
console.log('Total p.infoWindowParagraph tags in the FIRST mapInfoWindow div is : ' + totalCount);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

所以我有一個HTML字符串,它是類似於以下,和我想要得到的計數.infoWindowParagraph標籤在第一個.mapInfoWindow div。無論出於何種原因,這不是我所期望的,我不知道爲什麼。

HTML

<div class="mapInfoWindow"> 
    <p class="infoWindowParagraph">DATA HERE</p> 
    <p class="infoWindowParagraph">DATA HERE</p> 
    <p class="infoWindowParagraph">DATA HERE</p> 
    <p class="infoWindowParagraph">DATA HERE</p>  
</div> 
<div class="mapInfoWindow"> 
    <p class="infoWindowParagraph">DATA HERE</p> 
    <p class="infoWindowParagraph">DATA HERE</p> 
    <p class="infoWindowParagraph">DATA HERE</p> 
    <p class="infoWindowParagraph">DATA HERE</p>  
</div> 
<div class="mapInfoWindow"> 
    <p class="infoWindowParagraph">DATA HERE</p> 
    <p class="infoWindowParagraph">DATA HERE</p> 
    <p class="infoWindowParagraph">DATA HERE</p> 
    <p class="infoWindowParagraph">DATA HERE</p>  
</div> 

的jQuery/JavaScript的

var testObj = $([string from above]); 
console.log(testObj.find('.mapInfoWindow').find('.infoWindowParagraph').length); 

-- returns 0 every time should return 4 
-- also tried below trying to focus on first index (first instance of mapInfoWindow div in object returned) 

var testObj = $([string from above]).get(0).find('.infoWindowParagraph').length); 

-- still returns 0 

更新

那麼該死的,我現在的工作。對不起,在這裏浪費時間,忽略了明顯的!

+3

我猜測錯誤可能與'$([字符串從上面])',能否請你張貼的選擇和請多一些周圍的HTML請? – Hodrobond

+1

如果你這樣做,你可以在飛行中創建一個StackSnippet ... –

+0

@Hodrobond - 我在我的問題中的一個JavaScript變量的HTML字符串,我簡單地使用$(myvariable)從該變量創建jQuery對象。 ; – Phil

回答

1

你可以試試這個:

var testObj = '<div class="mapInfoWindow"><p class="infoWindowParagraph">DATA HERE</p><p class="infoWindowParagraph">DATA HERE</p><p class="infoWindowParagraph">DATA HERE</p><p class="infoWindowParagraph">DATA HERE</p></div><div class="mapInfoWindow"><p class="infoWindowParagraph">DATA HERE</p><p class="infoWindowParagraph">DATA HERE</p><p class="infoWindowParagraph">DATA HERE</p><p class="infoWindowParagraph">DATA HERE</p></div><div class="mapInfoWindow"><p class="infoWindowParagraph">DATA HERE</p><p class="infoWindowParagraph">DATA HERE</p><p class="infoWindowParagraph">DATA HERE</p><p class="infoWindowParagraph">DATA HERE</p></div>'; 
 

 
console.log($(testObj).first('.mapInfoWindow').children('.infoWindowParagraph').length);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

比我的解決方案要乾淨得多,謝謝! – Phil

+0

高興地幫助:) – Bhuwan

1

問題是,您正試圖選擇「.mapInfoWindow」,那是實際的對象,您只能在後代節點上執行.find()。

嘗試:testObj.find('.infoWindowParagraph').length

,將工作!