2011-04-21 44 views
1

您好我有這一塊HTML的父母懸停改變部分...jQuery的:兒童形象的href源

<a href="alcohol_calculator.php" class="swfselector"> 
&raquo; Alcohol unit calculator prototype 
<img class="tab" src="/images/1.png" width="30" height="28" alt="1" /> 
<img class="tab" src="/images/2.png" width="30" height="28" alt="2" /> 
<img class="tab" src="/images/3.png" width="30" height="28" alt="3" /> 
<img class="tab" src="/images/5.png" width="30" height="28" alt="5" /> 
</a> 

<a href="bouncing_ball.php" class="swfselector"> 
&raquo; Bouncing ball animation 
<img class="tab" src="/images/3.png" width="30" height="28" alt="3" /> 
</a> 

使用jQuery,我希望它這樣,當有人懸停在一個「swfselector」類所有帶有類別選項卡的子圖像將「o」添加到其src ...例如(/images/2o.png或/images/3.png/)中。

我有這個到目前爲止,但它什麼都沒做,並且會在「.png」之後添加「o」。

$('.swfselector').each.hover(function(){ 
    $(this).find('.tab').attr('src'+'o'); 
}); 

幫助感謝。

回答

2

這會爲你

var done1 = 0; 
$('a.swfselector1').live('hover', function() { 
    if(done2 != 1){ 
     $(this).find('.tab').each(function() { 
      $(this).attr("src", 
      $(this).attr("src").replace(".png", "o.png")); 
      done1 = 1; 
     }) 
    } 
}); 
var done2 = 0; 
$('a.swfselector2').live('hover', function() { 
    if(done2 != 1){ 
     $(this).find('.tab').each(function() { 
      $(this).attr("src", 
      $(this).attr("src").replace(".png", "o.png")); 
      done2 = 1; 
     }) 
    } 
}); 

不幸的是,要做到這一點,我發現最簡單的方法是改變工作多個a標籤的a標籤的類名具有h功能。基本上在swfselector的末尾添加一個數字。然後快速創建一個新的jQuery事件。

如果我沒有足夠清楚,看看this jsFiddle這將更容易理解。

最終結果(與喬治聯合小組工作):

$('.swfselector').live('mouseover mouseout', function() { 
if (event.type == 'mouseover') { 
    $(this).find('.tab').each(function() { 
     $(this).attr("src", $(this).attr("src").replace(".png", "o.png")); 
    }) 
} //end of if 
    else { 
      $(this).find('.tab').each(function() { 
      $(this).attr("src", $(this).attr("src").replace("o.png", ".png")); 
      }) 

    }//end of else 

});//end of mouseover/mouseout 
+0

謝謝這個工作,但我會有很多這些在頁面上的swf選擇器(超過一百)......這意味着一個巨大的CSS和JS文件。我也會一直將done2更改爲if語句中的最後一個事件變量嗎?我現在感覺更近了。 – 2011-04-21 11:13:25

+0

是的,你必須改變做最新的號碼。就像done1,done2 ...等等。我正在以另一種方式工作。 – ryryan 2011-04-21 11:17:55

+0

剛剛意識到不需要在swf選擇器的末尾添加數字,因爲它隻影響您懸停的那個數字。你知道我會如何反轉這個懸停,以便它可以再次運行,如果你懸停在不同的? – 2011-04-21 11:19:30

0

認爲這應該工作:

$('.swfselector').each.hover(function(){ 
    $('img.tab', this).each(function() { 
    var src_parts = this.src.split('.');//divide src by '.' symbol 

    src_parts[src_parts.length - 2] += 'o';//add 'o' before extension '.' 
    this.src = src_parts.join('.');//join back src with 'o' 
    } 
}); 
+0

感謝您的幫助,但是這似乎並沒有被做任何事情,也給了我一個「,‘對象不支持此屬性或方法’錯誤:( – 2011-04-21 11:05:59

2

嘗試

$('.swfselector').each.hover(function(){ 
    $(this).find('.tab').each(function() { 
      $(this).attr("src", 
       $(this).attr("src").replace(".png", "o.png")); 
    }) 
}); 
+0

實際上我認爲你可以通過使用$(this).find('.tab').attr(「src」,$(this).attr(「src」)。replace(「 .png「,」o.png「));但我沒有在這裏設置jQuery來嘗試它:-( – potatopeelings 2011-04-21 10:17:44

+0

乾杯的輸入,但我不能得到這個工作,什麼都沒有發生:(什麼更多IE是給我一個「對象不支持這個屬性或方法行:1個字符:1代碼:0」錯誤 – 2011-04-21 11:02:50