2013-03-01 187 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