2013-03-01 229 views
0

編輯:好的,代碼是好的。還有一些其他代碼應該在其他地方設置其他屬性,我陷入了「複製/粘貼忘記更改ID名稱」疾病的犧牲品。感謝大家的意見。對不起,作爲一個笨蛋。更改img src不顯示圖像

我有一種情況,當用戶單擊圖像時,我正在使用jquery動態更改img src屬性。基本上在註冊和取消註冊按鈕之間來回切換。當我點擊註冊按鈕時,它會正確切換到UnRegister圖像。但是,如果再次單擊它,將永遠不會切換回註冊圖像。我的代碼:

function unRegister() { 
     $('#reg').attr("src","/images/btnRegister.png");    
     $('#reg').attr("onClick","register()"); 
} 
function register() { 
     $('#reg').attr("src","/images/btnUnregister.png");    
     $('#reg').attr("onClick","unRegister()");   
} 

似乎很容易。我已驗證這兩個圖像拼寫正確,並位於/ images目錄中。我需要這兩個例程,因爲一旦解決了這個小問題,我將根據正在發生的操作做許多不同的事情。我已經驗證(通過方便的警報()調用該例程被調用,只是沒有像開關

+1

嗨,你能鏈接圖像生活是http://yoursite/images/btnRegister.png 404 ??還確認$(#REG)只是一個錯字的錯誤,而不是你的錯誤。 – 2013-03-01 20:15:03

+2

你能確認你的代碼是$('#reg')'而不是$(#reg)嗎? – Nix 2013-03-01 20:15:21

+0

http://jsfiddle.net/Kvagn/你的代碼實際上看起來不錯。正確切換圖像。 – dfsq 2013-03-01 20:15:46

回答

2

更改您的代碼(缺少apostrophs):

function register() { 
    $('#reg').attr("src","/images/btnUnregister.png");    
    $('#reg').attr("onClick","unRegister()");   
} 
1

伊克,我恨聯JavaScript :?

$(document).on('click','#reg',function(e) { 
// e.preventDefault(); 
    if ($(this).attr("src")==="/images/btnRegister.png") { 
     $(this).attr("src","/images/btnUnregister.png"); 
    } else { 
     $(this).attr("src","/images/btnRegister.png"); 
    } 
});   

http://api.jquery.com/on/

+0

JavaScript是在服務器上的某個點動態生成的,因此我決定不綁定到click事件,因爲我不想處理內務。 – mlewis54 2013-03-01 21:37:27

+0

但這就是事件委託的優點:通過將事件處理程序綁定到'document'(理想情況下,它應該是最接近的DOM父級),它會自動應用於與給定選擇器匹配的每個「document」子元素。簡單地使用一個像''reg''這樣有用的類並使用'$(document).on('click','。reg',function(e){...});'然後你就開始了。 – Blazemonger 2013-03-01 22:14:11

+0

好點。我將把它合併到代碼中。 – mlewis54 2013-03-01 22:42:11