2013-03-26 52 views
2

我看起來更好做這項工作,我想填寫單擊圖像的標題,我肯定有是更好的解決方案。訪問一次孩子,然後在jQuery(1.9.x和更多)重用父母

感謝您的回答, Allan。 (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');

回答

2

您可以使用.filter().siblings()

$bImg 
    .find('.title, .caption') 
    .fadeIn() 
    .filter('.title') // gets .title out of the collection 
    .text(title) 
    .siblings('.caption') 
    .text(caption); 
+0

這看起來太棒了!謝謝。 – 2013-03-26 23:52:56

1

一個更有效的方法:

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

除非你絕對需要在一行內完成它,上述應該是首選,因爲它只發現一次元素,並將緩存對象用於所有後續使用 - 與原始代碼重新獲得至少2個所有項目不同次(父 - 3倍,.title僞 - 2倍和.caption - 2倍)

1
$('.title, .caption', '.big-image').fadeIn().text(function() { 
    return $(this).is('.title') ? title : caption; 
});