2012-07-06 53 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

相关问题