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>要素をすべて選択してしまったり、
なかなかうまくいきません。どなたか助けてください。

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2012/09/23 19:18:04
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

ポイント100pt

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

<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/

id:jinchangz

ありがとうございます。問題なくできました。

2012/09/23 19:17:47

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません