[HTML/jQuery] onmouseover、onmouseout置換圖片+按下ImageButton後該圖片為onmouseover圖片,並還原其他ImageButton的圖片

[HTML/jQuery] onmouseover、onmouseout置換圖片+按下ImageButton後該圖片為onmouseover圖片,並還原其他ImageButton的圖片

問題來源:http://social.msdn.microsoft.com/Forums/zh-TW/236/thread/555586b4-dff5-41ce-9dc8-0cf1aef5ce77

需求:全用Client端技術做

個人實現過程,發現在IE8若直接用jquery的attr函數替換src屬性的話,圖片會變成叉燒包,所幸後來找到解決方案,算增加一個經驗值吧

 

以下舉兩個ImageButton做範例

.html

 


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <!--引用jQuery核心函式庫 -->
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js"></script>
    <script type="text/javascript">
        $(document).ready(init);

        function init() {//畫面載入完DOM時,要做的事情

        }

        function changePic(originalID, mouseoverPicPath) {
            //IE8不支持 jquery的attr 塞 src 解决方法:http://zhidao.baidu.com/question/259203633.html?fr=qrl&cid=93&index=4
            //$("#" + originalID).attr("src", mouseoverPicPath);//在IE8 會變叉燒包
            var currentID = originalID.substring(6,7).toString();
            var picName = mouseoverPicPath.substring(7, 8); //A或B
            $("#spanImg" + currentID).html("<input type='image' id='btnImg"+currentID+"' src='images/"+picName+ currentID+".jpg'  onmouseout='this.src=\"images/"+picName+ currentID + ".jpg\"' onmouseover='this.src=\"images/"+picName+"2.jpg\"' onclick=\"changePic(this.id,'images/"+picName+"2.jpg');\" />");
            $("#" + originalID).attr("onmouseout", "");

          
            /*還原其他<input type='image' />*/
            if (currentID == "1") {
                $("#btnImg2").attr("src", "images/B1.jpg");
                $("#btnImg2").attr("onmouseout","this.src='images/B1.jpg'");
            }else if (currentID == "2") {
                $("#btnImg1").attr("src", "images/A1.jpg");
                $("#btnImg1").attr("onmouseout", "this.src='images/A1.jpg'");
            }
            
        }
    
    </script> 
</head>
<body>
 <span id="spanImg1">
 <input type="image" id="btnImg1" src="images/A1.jpg"  onmouseout='this.src="images/A1.jpg"' onmouseover='this.src="images/A2.jpg"' 
 onclick="changePic(this.id,'images/A2');" />
 </span>
 <span id="spanImg2">
 <input type="image" id="btnImg2" src="images/B1.jpg"  onmouseout='this.src="images/B1.jpg"' onmouseover='this.src="images/B2.jpg"' 
 onclick="changePic(this.id,'images/B2');"/>
 </span>

</body>
</html>

在Click按鈕圖片後,還原其他<input type=’image’ />,目前是寫死的,想不到有什麼可以動態置換的辦法

等哪天靈光一現時候,再更新好了。

 

執行效果:

預設兩張圖片onmouseover、onmouseout時,可以置換圖片

image

當按下右邊的圖片時

image

右邊的圖片會固定住,這時右方圖片的onmouseout失效,左方圖片仍然有onmouseover、onmouseout置換圖片的效果

image

當Click左方圖片時,效果同上。

 

程式碼懶人包下載