2013-03-03 82 views
0

我是jQuery的新手,發現切換功能真的很吸引人。我想要一個圖像的點擊後切換到不同的圖像,然後再返回,就像這樣:jQuery toggle()防止加載圖像

$(document).ready(function() { 
    $("#expand").toggle(function(){ 
     $(this).attr("src","images/expandWidget.png"); 
    },function(){ 
     $(this).attr("src", "images/minimizeWidget.png"); 
    }); 
}); // end ready 

而且圖像本身聲明如下:

<img id="expand" src="images/minimizeWidget.png"></img></div> 

我注意到,當我跑這通過Chrome瀏覽器,圖像改爲:

<img id="expand" src="images/minimizeWidget.png" style="display: none;"> 

而且我的形象沒有顯示。 Chrome爲什麼要這樣做?如果我改變切換到click(),我的圖像顯示沒有問題,我可以切換到不同的圖像,但當然不會回來。我在控制檯中沒有錯誤,並且頁面不會導入會影響img的其他樣式。我是否正確使用切換?如果您需要更多信息,請告訴我。

謝謝

+0

這是錯誤的:''img標籤使用 「自我 - 關」:'' 2013-03-03 23:42:40

回答

0

代替toggle使用.click()

LIVE DEMO

var images = ["images/expandWidget.png", "images/minimizeWidget.png"], c=0; 
$("#expand").click(function(){ 
    this.src = images[++c%2]; 
}); 
+0

嗯...非常狡猾的代碼先生。謝謝! – roboto1986 2013-03-04 00:00:55

+0

@ roboto1986不客氣! – 2013-03-04 00:01:16

0

您誤解了jQuery切換的功能。

它'切換'元素的可見性,因此它消失。這並不是最好的名字,但我們都曾經在.click()之內編寫我們自己版本的切換方法。

參見文檔:

http://api.jquery.com/toggle/

你可能想是這樣的:

$("#expand").click(function(){ 
    if($(this).attr("src") == "images/expandWidget.png") { 
     $(this).attr("src", "images/minimizeWidget.png"); 
    } else { 
     $(this).attr("src","images/expandWidget.png"); 
    } 
}); 
+0

這要看是什麼jQuery的OP的版本使用。您在原始帖子中看到的語法對於1.9之前的版本有效。 – Blender 2013-03-03 23:46:58

+0

嗯我試過你的代碼,工作。謝謝!我正在使用jQuery 1.9.1。所以這已經被打破了?我讀了一本使用我給出的例子的書。我會改變的唯一的事情是通過存儲在一個臨時變量兩次調用,但我可以管理:) – roboto1986 2013-03-03 23:53:04