2

私はこの仕事をするためにより良いものを探しています、私はクリックされた画像のキャプションを埋めたいです、そして私はより良い解決策があると確信しています。

答えてくれてありがとう、アラン。(fr)

Jqueryは:

$bImg
  .find('.title, .caption')
    .fadeIn()
  .parent()
  .find('.title')
    .text(title)
  .parent()
  .find('.caption')
    .text(caption);

HTMLは次のとおりです。

<div class="big-image carousel">
   <img src="http://placehold.it/450x240/FFFFCC">
   <div class="title">ThIs PhOtO</div>
   <div class="caption">Itaque earum rerum hic in tenetur</div>
</div>

PS:$bImg = $('.big-image');

4

3 に答える 3

2

.filter().siblings( )を使用できます

$bImg
  .find('.title, .caption')
    .fadeIn()
  .filter('.title') // gets .title out of the collection
    .text(title)
  .siblings('.caption')
    .text(caption);
于 2013-03-26T23:36:19.283 に答える
1

同じことを行うためのはるかに効率的な方法は次のとおりです。

$bImg.find('.title').text(title).fadeIn();
$bImg.find('.caption').text(caption).fadeIn();

絶対に1行で実行する必要がない限り、各要素を1回だけ検出し、キャッシュされたオブジェクトをその後のすべての使用に使用するため、上記を優先する必要があります。これは、すべてのアイテムを少なくとも2回更新する元のコードとは異なります(親-3回、.title-2回、.caption-2回)

于 2013-03-26T23:36:04.383 に答える
1
$('.title, .caption', '.big-image').fadeIn().text(function() { 
    return $(this).is('.title') ? title : caption; 
});
于 2013-03-26T23:49:01.370 に答える