2

作成中のサイトのサイドバーの 1 つからフライアウト メニューとして使用されるリストがあります。

サイトの背後にある CMS がこのリストをオンザフライで作成するため、javascript を介して最後の<li>項目を削除しようとしているため、HTML 自体で削除することはできません。

私が持っているコードが IE、Safari、および FireFox では機能するが、Chrome では機能しないという奇妙な状況に遭遇しました。Chrome の場合、コードはリストの最後の 2 つの項目を削除します。

メニュー・一覧:

<div class="SideCategoryListFlyout">
   <ul class="sf-menu sf-vertical sf-js-enabled">
      <li>
         <a class="sf-with-ul" href="http://myurl/clearance/">
         Clearance
         <span class="sf-sub-indicator"> »</span>
         </a>
         <ul style="display: none; visibility: hidden;"> </ul>
      </li>
      <li>
         <a class="sf-with-ul" href="http://myurl/Promotions/">
         Promotions
         <span class="sf-sub-indicator"> »</span>
         </a>
         <ul style="display: none; visibility: hidden;"> </ul>
      </li>
      <li>
         <a class="sf-with-ul" href="http://myurl/Notebooks/">
         Notebooks
         <span class="sf-sub-indicator"> »</span>
         </a>
         <ul style="display: none; visibility: hidden;"> </ul>
      </li>
      <li>                                                          <-- REMOVE
         <a class="sf-with-ul" href="http://myurl/REMOVE/">         <-- REMOVE
         REMOVE                                                     <-- REMOVE  
         <span class="sf-sub-indicator"> »</span>                   <-- REMOVE
         </a>                                                       <-- REMOVE  
         <ul style="display: none; visibility: hidden;"> </ul>      <-- REMOVE
      </li>                                                         <-- REMOVE
   </ul>
</div>

私のJavascript

<script type="text/javascript">
$(window).load(function(){
    $('.SideCategoryListFlyout li:last-child').remove();
});
</script>
4

4 に答える 4

1

Chrome がウィンドウを 2 回ロードしている可能性があります。ウィンドウが読み込まれるのではなく、ドキュメントの準備が整うのを待つのが一般的です。これを試して:

<script type="text/javascript">
$(document).ready(function(){
    $('.SideCategoryListFlyout ul li:last').remove();
});
</script>

編集:

Chrome と FireFox の両方で、これが機能することを確認しました: http://jsfiddle.net/n6fQ8/

于 2013-08-02T09:42:08.080 に答える
0

これを試すことができます:

$('.SideCategoryListFlyout li').last().remove();

または、いくつかのLiが必要な場合は、これを使用できます:$('.SideCategoryListFlyout').children().slice(0, n).remove();

于 2013-08-02T09:47:04.710 に答える