0

私はhtmlを持っています

<ul id="main">
   <li id="A100">
             <ul class="slides">
                     <li><img1></li>
                     <li><img2></li>
             </ul>
   </li> 
   <li id="A99">
             <ul class="slides">
                     <li><img1></li>
                     <li><img2></li>
             </ul>
   </li>
</ul>

次に、ajax で以下を追加します。

<li id="A98">
             <ul class="slides">
                     <li><img1></li>
                     <li><img2></li>
             </ul>
   </li> 
   <li id="A97">
             <ul class="slides">
                     <li><img1></li>
                     <li><img2></li>
             </ul>
   </li>

だからこんな感じ

 <ul id="main">
       <li id="A100">
                 <ul class="slides">
                         <li><img1></li>
                         <li><img2></li>
                 </ul>
       </li> 
       <li id="A99">
                 <ul class="slides">
                         <li><img1></li>
                         <li><img2></li>
                 </ul>
       </li>
       <li id="A98">
                 <ul class="slides">
                         <li><img1></li>
                         <li><img2></li>
                 </ul>
       </li> 
       <li id="A97">
                 <ul class="slides">
                         <li><img1></li>
                         <li><img2></li>
                 </ul>
       </li>
    </ul>

正しい構文は何ですか

$("#main").children(with id after ids ending with 99).nextAll.each(function(){
     $(this).something({
       //do stuff.

      });
});

レベル1でのみ「何か」をしたいので、find()ではなくchildren()を使用する必要があります<li>.

編集:私は「何かをする」でしょう。アヤックス成功。(それが質問をよりよく理解するのに役立つ場合)

EDIT2:すべての提案をありがとう。私はこれを見つけました。ajax を行う前から、既存の html に対して「何かを実行」します。(つまり、A100、A99)

私が使用する場合

$("#main li").each(function() 
    { 

        });

期待どおりに動作しますが、使用する場合

 $("#main").children("li").each(function() 
        { 

            });

動作していません。ここの違いは何ですか?それがわかれば、当面の問題を解決できると思います。

このようなものがうまくいくのでしょうか?これを試してみましたが、うまくいきませんでしたが、私のやり方が間違っているのでしょうか?

$("#main li[id$='A99']").nextAll().each(function() 
            { 

                });
4

4 に答える 4

1

id数値が数値的に減少するかどうか完全に確信が持てない場合は、 ( )の形式と数値が未満であることを積極的にテストできます。idA00100

$('#main > li').filter(function () {
    var id = this.id;
    return (/^A\d{2}$/).test(id) && parseInt(id.replace(/[^0-9]/g, ''), 10) < 99;
}).each(function(){
    // do whatever, for example:
    this.classList.add('selected');
});

JS フィドルのデモ

参考文献:

于 2013-10-23T20:27:10.877 に答える
1

IDが常に降順であると仮定すると、これでうまくいきます。

$("#main").find('#A99').nextAll().each(function(){
    //$(this)... will yield A98, A97
});
于 2013-10-23T20:27:45.667 に答える
1

このコードを使用してください:

jsフィドル

for ( var i=98; i>40 /* or some thing else */;i--){
    $("li#A"+i).css("background","red"); 
}
于 2013-10-23T20:20:12.310 に答える