2013-03-01 5 views
0

Редактировать: Хорошо, код в порядке. Был еще какой-то другой код, который должен был устанавливать другие атрибуты где-то еще, и я стал жертвой болезни «copy/paste забыл изменить имя идентификатора». Спасибо за вклад каждого. Извини за то, что ты болван.Изменение img src не отображает изображение

У меня возникла ситуация, когда я использую jquery для динамического изменения атрибута img src при щелчке пользователем изображения. В основном переключение между регистром и кнопкой UnRegister. Когда я нажимаю на кнопку регистрации, он правильно переключается на изображение 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 ?? также подтверждают $ (# р) просто опечатка ошибка и не ВАША ОШИБКА. –

+2

Можете ли вы подтвердить, что ваш код '$ ('# reg')', а не $ (# reg)? – Nix

+0

http://jsfiddle.net/Kvagn/ На самом деле ваш код выглядит неплохо. Правильно переключает изображения. – dfsq

ответ

2

Изменить код (отсутствующие одинарные кавычки.):

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

+0

Но это красота делегирования событий: привязка обработчика события к 'document' (в идеале, он должен быть ближайшим родителем DOM), он автоматически применяется к каждому дочернему элементу' document', который соответствует данному селектору. Просто используйте полезный класс, например '' reg'', и используйте '$ (document) .on ('click', '. Reg', function (e) {...});' и вы готовы к работе. – Blazemonger

+0

Хорошая точка. Я включу его в код. – mlewis54

Смежные вопросы