HOME>WEBプログラム覚書>[jQuery].add()で戸惑った件
[jQuery].add()で戸惑った件
jQueryの.add()。いまさらながら、なんでこれが違う結果になるのか戸惑う。
サンプル
Javascript
$('.jqTest1 .execute1').on('click', function(e){
var div$ = $('<div>').css({
width: 100,
height: 100,
background: '#555555'
})
.add('<p>', {text: '追加される'}).css({
border: '5px solid #990000'
});
$('.jqTest1').append(div$);
});
$('.jqTest1 .execute2').on('click', function(e){
var div$ = $('<div>').css({
width: 100,
height: 100,
background: '#555555'
});
div$.add('<p>', {text: '追加されない'}).css({
border: '5px solid #990000'
});
$('.jqTest1').append(div$);
});
HTML
<div class="jqTest1">
<button class="execute1">execute1</button><button class="execute2">execute2</button>
<hr />
</div>
正解はこうだった。
サンプル
Javascript
$('.jqTest2 .execute1').on('click', function(e){
var div$ = $('<div>').css({
width: 100,
height: 100,
background: '#555555'
});
div$ = div$.add('<p>', {text: '追加される'}).css({
border: '5px solid #990000'
});
$('.jqTest2').append(div$);
});
$('.jqTest2 .execute2').on('click', function(e){
var div$ = $('<div>').css({
width: 100,
height: 100,
background: '#555555'
});
$('.jqTest2').append(div$.add('<p>', {text: '追加される'})
.css({ border: '5px solid #990000'})
);
});
HTML
<div class="jqTest2">
<button class="execute1">execute1</button><button class="execute2">execute2</button>
<hr />
</div>
.add(elem)は対象のjQueryオブジェクトにelemを追加するのではなく、elemを追加した新たなjQueryオブジェクトを返すみたい。ちゃんと公式サイトにかいてありましたわ。
投稿日 |
2011年11月26日 04:46 |
カテゴリ |
JavaScript |
タグ |
jQuery |
トラックバック URL |
http://www.kantenna.com/cgi-bin/mt504/mt-tb.cgi/1241 |
コメント