2057 次
3 に答える
1
要素に子ノードが 1 つしかなく、そのノードが要素であることを確認するために、contents()でfilter()を使用できます。<p>
<b>
$("#selector p").filter(function() {
var $contents = $(this).contents();
return $contents.length == 1 && $contents.eq(0).is("b");
}).replaceWith(function() {
return "<p class='h_replace'>" + $(this).text() + "</p>";
});
于 2012-09-05T05:56:54.467 に答える
1
これを試して:
var els = $('p').filter(function() {
return /^<(b)>.+<\/\1>$/.test($.trim($(this).html()));
});
テキストノードのないp
唯一の子を持つすべてのものを取得します。上記のコードのどのタグでもb
変更できます。(b)
編集:反対票を投じる理由はわかりませんが、これはうまく機能します:
<p><b>Something</b></p> // true
<p> <b>Something</b> </p> // true
<p><b>Something</b> lorem</p> // false
<p>lorem <b>Something</b></p> // false
<p><span><b>Something</b></span></p> // false
于 2012-09-05T06:00:00.080 に答える
0
elclanrs answerは、テキストを適切に選択するためのトリックを行いました。繰り返しになりますが、デモページはこちらです。
最終コード:
$(document).ready(function() {
var pbs = $('#selector p').filter(function() {
return /^<(b)>.+<\/\1>$/.test($.trim($(this).html()));
});
pbs.replaceWith(function() {
return '<p class="h_replace">' + $(this).text() + '</p>';
}).addClass('h_replace2').css('width', '100%');
});
StackOverflowは最大です。パイプを使ってくれたみんなに感謝します!私を何時間も節約しました(そして何時間も私は日を意味します!!)ありがとう!
于 2012-09-05T06:17:49.147 に答える