2

HTMLコンテンツを格納する基本的な文字列変数があります。

文字列内のhtmlは、次のような複雑なリストです。

<ul>
<li>One
  <ul>
    <li>a</li>
    <li>b</li>
    <li>c</li>
  </ul>
</li>
<li>Two
  <ul>
    <li>d</li>
    <li>e</li>
    <li>f
      <ul>
        <li>g</li>
        <li>h</li>
        <li>i</li>
      </ul>
    </li>
  </ul>
</li>
<li>Three</li>

上記は単純化された例ですが、ご覧のとおり、リスト要素の数は不明です。list要素には、別のリストを含めることができます。レベルの数は不明です(リスト要素には不明な(おそらく最大9つの)親が含まれる可能性があります<ul>

この文字列をHTMLに変換すると、次のようになります。

var obj = $(myHTMLString);

ただし、これはリスト要素の最初のレベルのみを返します。したがって、次のforループでは、最初のレベルのみが検索されます。私は子要素を検索する方法を知っていますが(コードのelseセクションで)、リストのすべてのレベルでこれを実行する必要があります-これは不明です。

for (var i=0; i<obj.length;i++) {
    if ( obj[i].id == someOtherVariable ) {
        //we have found it
    }
}

HTML変数(obj)ですべてのリスト要素を検索する方法はありますか?

console.log( $(myHTMLString) );私はそれがこのように見えるときにそれを追加したいと思います:

スクリーンショット

4

4 に答える 4

3

はい:

var lis = $(myHTMLString).find("li");

それらを反復処理するには:

lis.each(function(index, li){
   //do your thing. i is the index in the array, li is the li element
})
于 2012-11-14T15:34:53.850 に答える
1

HTML文字列をコンテキストとして使用するだけで、通常どおりにセレクターを使用できます。これを試して:

$('li', $(myHTMLString)).each(function() {
    // do something with the li
});
于 2012-11-14T15:36:23.577 に答える
0

あなたはあなたのリストですべてを見つけることができますli

var liElements= $(myHTMLString).find('li');
于 2012-11-14T15:34:45.150 に答える
0

要素だけでなくli、子ノードを歩いていくと思います

function searchli(object){
for each element in $(this).children()
{
if $(this) is li
{
add to selection;
}
call searchli($('this'));
}
next element;
return selection;
};

call searchli($('#list'))

クラス選択または属性選択を割り当て、これを「メイン」で再度クエリすることで選択します。したがって、これは基本的に、最初の選択のすべての子ノードをウォークスルーする再帰関数ですが、おそらくそのようには正確には機能しません。

于 2012-11-14T15:44:20.893 に答える