wordpressでカスタムメニューを出力するともちろん、すべてのリストメニューにリンクが張ってあるんですが、どうしても最初のリストメニューのリンクを削除したかったので調べてみた
unwrapを利用した削除
2011/8/5時点では、jquery日本語リファレンスには書いてなかったのだが、要は親要素を削除するメソッド
こいつを利用して削除できるのだが、その前に注意点として「remove」メソッドを利用すれば削除できるんじゃないか?と思ったのだが実際やってみるとリンクのタグである「a」タグをremoveに指定するとその中の文字列もすべて削除されてしまうので注意が必要。
上記のようにしたい場合は下記のようにすればいい。
$("li span").unwrap();
contentsメソッドを利用した親要素削除
最初の方法はよくspanタグでテキストを消して背景画像を表示させるためにspanで括ってるがspanでくくる必要がない場合はaタグ直下はテキストなので、unwrapで指定することができない
上記のような場合はcontentsメソッドを利用して要素のテキストノードも含めた子要素を取得して親要素のaタグを削除する方法がある
$("a").contents().unwrap();
というようにcontentsでaタグの子要素のテキストノードを取得してその親要素のaタグを削除って方法
下記参考サイトが詳しく書いてあります。というか同じメソッドのことなので同じになってしまってます。
THE HAM MEDIA BLOG「親要素のみ削除する方法[jQuery1.4系版]」