人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

jQueryの質問です。
<div>
<ul>
<li>1</li>
<li><a>2</a></li>
<li>3</li>
<li>4</li>
<li><a>5</a></li>
<li>6</li>
</ul>
</div>

かなり簡略して書きましたが、上の<li>要素の子要素に<a>要素がある場合とない場合があり、
子要素に<a>要素がない<li>要素の中身のテキストをwrapInner()で<a>要素でラップしたいのですが
「子要素に<a>要素がない<li>要素」の選別がうまくできません。<li>要素をすべて選択してしまったり、
なかなかうまくいきません。どなたか助けてください。

●質問者: jinchangz
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●100ポイント ベストアンサー

こんな感じでできました。

<script>
$(function() {
 $("li:not(:has(a))").wrapInner("<a style='color:red;' />");
});
</script>

<div>
<ul>
<li>1</li>
<li><a>2</a></li>
<li>3</li>
<li>4</li>
<li><a>5</a></li>
<li>6</li>
</ul>
</div>

wrapInner が効いてるのが分かりやすいように、color: red を付けてます。
動作が確認できたら、適宜、変更してください。


jsfiddle.net で、確認してみたのがこちらです。
http://jsfiddle.net/SQ8Hf/


jinchangzさんのコメント
ありがとうございます。問題なくできました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ