私はjQueryのドキュメントに取り組んでおり、完全に理解していないreplaceWith()の例( http://api.jquery.com/replaceWith/の最後の例)の一部を見つけました。この投稿へのリンクを jQuery ドキュメントの replaceWith() ページのコメントとして投稿し、jQuery および DOM 操作の初心者を支援します。
具体的には、次の「$container」の動作を完全には理解していません。
"$("p").append( $container.attr("class") );"
変数が作成されたときに「replaceWith()」メソッドが呼び出されたため、上記のコードが「p」の内容に「inner」という単語を追加することを期待していました。
var $container = $("div.container").replaceWith(function() {
return $(this).contents();
});
ただし、「$("p").append( $container.attr("class") );」実際には、「内部」という単語ではなく、「コンテナ」という単語を追加します。
変数「$container」は実際には、置き換えられたコンテンツ「$(this).contents();」ではなく、置き換えられた div「$("div.container")」を参照しているようです。
2 つの質問:
- このコンテキストで「replaceWith()」は何をしていますか?
- 操作の順序または「attr()」メソッドで、私が見ていない特別なことが起こっていますか?
完全なコードは次のとおりです。
<!DOCTYPE html>
<html>
<head>
<style>
.container { background-color: #991; }
.inner { color: #911; }
</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<p>
<button>Replace!</button>
</p>
<div class="container">
<div class="inner">Scooby</div>
<div class="inner">Dooby</div>
<div class="inner">Doo</div>
</div>
<script>
$('button').bind("click", function() {
**var $container = $("div.container").replaceWith(function() {
return $(this).contents();
});**
**$("p").append( $container.attr("class") );**
});
</script>
</body>
</html>