0

クライアントの企業サイトを更新していますが、html/css/php の編集が許可されていません。メイン ナビゲーションに追加または削除するなど、小さな変更を加える必要がある場合は、JS オーバーライド ファイルと jQuery を使用する必要があります。好むと好まざるとにかかわらず、これは彼らのシステムです。

順序付けられていないリストに単純な項目を追加する必要があります。nav ラッパーには ID があるため、UL をターゲットにするのは簡単です。nth:child を使用したくないのは、変更される可能性のある 2 つの特定の他のアイテムの間にこの新しいアイテムが必要だからです。どの LI タグにもクラスまたは ID はありません。各 LI の内部にはリンク/アンカーがあります。内側のアンカーのテキストに基づいてリスト項目を選択できるようにする必要があります。

<div id="nav">
<ul>
  <li><a href="">Something 1</a></li>
  <li><a href="">Something 2</a></li>
  // Need to insert here, but only because it must go after 
     Something 2, which itself may change positions in the future.
  <li><a href="">Something 3</a></li>
  <li><a href="">Something 4</a></li>
</ul>
</div>

jQueryを使用して、これを最も安全に行うにはどうすればよいですか?

4

2 に答える 2

1

これはあなたが望むことをするはずです..

$('#nav li').filter(function(){
     return $(this).text() == 'Something 2';
}).after('<li><a href="">Something new</a></li>');

比較のより安全な方法は、両方の文字列をトリミングして小文字に変換することです。
さらに、DOMready イベントの後にコードを呼び出す必要があります

$(function(){
    var existingElement = 'Something 2'.toLowerCase();
    $('#nav li').filter(function(){
         var cleanText = $.trim($(this).text()).toLowerCase();
         return cleanText  == existingElement;
    }).after('<li><a href="">Something new</a></li>');
});
于 2012-10-23T15:38:11.900 に答える
0

これを試して...

$("ul#nav li").filter(function() {
    return $(this).find("a").text() == "Something 2";
}).after("<li>your element goes here</li>");​

これが機能するフィドルです... http://jsfiddle.net/Sbm7D/

于 2012-10-23T15:29:42.567 に答える