2017-06-06 17 views
0

jQueryの.find()メソッド - 文字列内の検索は

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文字列を持っている、と私はカウントを取得しようとしているjQueryオブジェクトに変換しますFIRST .mapInfoWindow divの.infoWindowParagraphタグどんな理由であれ、私が期待しているとおりに動作していないので、なぜそれがわからないのですか。

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

あなたがこの試すことができます:あなたはそのセレクターとAを投稿してください可能性があり、私は `$([上から文字列])`に関連する可能性があるエラーを推測している

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

動作します!