2012-07-06 84 views
2

我試圖根據用戶以前點擊過的哪個單獨的圖像檢索圖像的來源。當另一個圖像被點擊時檢索圖像源?

<div class="card1"> 
    <div> 
    <a href="#" class="quickFlipCta"><img class="back" src="Memory Pals/Test Pictures/QuestionMark.gif" /></a> 
    </div> 

    <div> 
    <a href="#" class="quickFlipCta"><img class="front" src="Memory Pals/Test Pictures/flower.gif" /></a> 
    </div> 
</div> 

<div class="card2"> 
    <div> 
    <a href="#" class="quickFlipCta"><img class="back" src="Memory Pals/Test Pictures/QuestionMark.gif" /></a> 
    </div> 

    <div> 
    <a href="#" class="quickFlipCta"><img class="front" src="Memory Pals/Test Pictures/flower.gif" /></a> 
    </div> 
</div> 

在我的具體示例中,我試圖在單擊「返回」時檢索「前」的源。此外,它必須檢索同一張卡片中的「前」的來源。

這是我嘗試過,但我無法得到它的工作:

$(document).ready(function(){ 

     var found = 0; 
     var last = null; 

     $('img').each(function(index){ 
      $(this).attr('id','img-' + index); 
     });  

     $('img').click(function(){ 
      if(last) { 
      if(($(this).attr('src') == last.attr('src'))) { 
       $(this).css('visibility', 'hidden'); 
       last.css('visibility', 'hidden'); 
       found++; 
      } 
      if (found == 3) { 
      window.location.href = "#play2"; 
      location.reload(); //resets found to 0 
      } 
      last = null; 
      } else { 
      last = $(this); 
      } 
     }); 

我意識到它不會檢索源「前,」只是該圖像的源用戶點擊了。如何更改它,以便在單擊「返回」時檢索「前」的來源?

回答

2

這裏是東西,可能你指出正確的方向:

$('img.back').click(function() { 
    var frontSrc = $('img.front').first().attr('src'); 
    alert('The source for \'front\' is ' + frontSrc); 
    } 
}); // end .click handler 

使用hasClass jQuery的功能,以找出是否你已經點擊了「返回」類的元素。然後使用img.front選擇器查找具有前類的圖像並檢索其源。

+0

感謝您的回答。我試圖使用你的方法,但我似乎無法完全正確地工作。這是我有:。 '$( 'img.back')點擊(函數(){ \t \t如果(最後一個){ \t \t \t如果($( 'img.front')第一() .attr( 'SRC')== last.first()ATTR( 'SRC')){ \t \t \t $(本)的.css( '知名度', '隱藏'); \t \t \t last.css ( '能見度', '隱藏'); \t \t \t發現++; \t \t \t} \t \t \t if(found == 3){ \t \t \t window.location.href =「#play2」; \t \t \t} \t \t \t最後= NULL; \t \t}其他{ \t \t \t最後= $(本); \t \t} \t \t});' 我認爲這是一些與'最後= $(本)'或東西時,我試圖隱藏與的.css(圖片用) – Jon 2012-07-07 00:09:33

+0

嘗試步進通與代碼你的調試器,看看'last'是否有你認爲它應該有的價值。如果沒有,請問爲什麼 – 2012-07-08 14:50:55

+0

只是意識到這種方法每次只檢索同一圖像的frontSource。即使bug.jpg是前端,它也會始終返回flower.gif的src。 – Jon 2012-07-08 19:55:20

1

這是你在找什麼?

$('img').click(function(){ 
    console.log($(this) 
      .closest('div[class*=card]') // <-- get closest div with class containing card 
      .find('div > a > img') // <-- find all img under that div 
      .not(this) // <-- filter out the clicked one 
      .attr('src')); // <-- get src of the image not clicked under same div with class containing card 
});​ 

http://jsfiddle.net/gweVT/

+0

謝謝你的迴應。你的代碼看起來應該可以工作。我對於在當前代碼中如何使用它有點困惑。我應該將src存儲在一個變量中,以便我可以比較它嗎? – Jon 2012-07-06 17:38:32

+0

是的,'var yourVariable = $(this) .closest('div [class * = card]')。find('div> a> img')。not(this).attr('src')'will讓你看到另一個'img'標籤的src。您可以將它存儲在一個變量中,這樣您就不必在每次需要使用它時都使用那麼長的代碼來檢索它。 – 2012-07-06 17:42:39

+0

我試着使用你的方法,並提供一個alert()消息源,它出來是「未定義」。 '$( 'IMG')。點擊(函數(){ \t \t \t \t \t \t VAR frontSrc = $(本).closest( 'DIV [*類=卡]')。找到('DIV>一> IMG ')不(本).attr(' SRC'); \t \t \t \t \t \t警報(frontSrc); \t \t \t \t \t \t});' – Jon 2012-07-08 20:25:34

相關問題