3

私はこのタイプのhtmlを持っています

<div id='foo'>
  <ol>
   <li>
      <a/>
      <a/>
      <ol><li><a/><a/><a/></li></ol>
   </li>
   <li>
      <a/>
      <a/>
      <ol><li><a/><a/><a/></li></ol>
   </li>
   <li>
      <a/>
      <a/>
      <ol><li><a/><a/><a/></li></ol>
   </li>
  </ol>
</div>

各最初のレベル「li」で最後の「a」タグだけを選択するにはどうすればよいですか? :last を使用してみましたが、最後の「a」しか取得できません。ネストされた「ol」内にネストされた「a」要素は必要ないことに注意してください。IE セレクターは 3 つの「a」タグを生成する必要があります。ヒントや例は素晴らしいでしょう!ありがとう。

4

5 に答える 5

3

$('#foo > ol > li > a:last-of-type');

また、li と a の間で子セレクターを使用する必要があります。そうしないと、最後の子であるすべての要素が返されます。

jsFiddle の例: http://jsfiddle.net/48uQM/3/

見やすいように赤い背景色を使用するように回答を更新しました。

コメントで言及されているように、これは IE8 以前、または :last-of-type をサポートしていないブラウザーでは機能しません。

ここで IE8 以前のブラウザーで作業するには、別の解決策があります。

http://jsfiddle.net/zcH8D/

$(document).ready(function() {
    $li = $('#foo > ol > li');
    $li.each(function () {
      $a = $(this).find(">a");
      $a.filter(":last").addClass('last');                
    });        
});​
于 2012-09-18T21:55:35.923 に答える
2

これをチェックして:

$("div ol li ol").prev().css('background-color', 'red');

jsフィドル

于 2012-09-18T21:51:19.490 に答える
1
$('#foo > ol > li > a').filter(function(){
    return !$(this).next('a').length
})

http://jsfiddle.net/mBwug/

于 2012-09-18T21:37:40.870 に答える
0
jQuery('#foo>ol>li a:last-child'); 

最初のレベルのli要素内の最後のタグを取得します

于 2012-09-18T21:37:45.533 に答える
-1

これを試して

​//console.log($('ol li ol li a:last'))

var lists = $('ol li ol li'); 
$.each(lists, function(i){
    console.log($(this).find('a:last'))
});
​

ループなしでこれを試すことができます

 console.log($('ol li ol li > a:last-child');)

フィドルノーループ

フィドル

于 2012-09-18T21:39:07.990 に答える