2012-12-05 13 views
17

Powiel możliwe:
Setting image src attribute not working in ChromeJak ustawić obraz src na pusty?

Gdy użytkownik kliknie na "usunąć" link muszę ustawić atrybut obrazu src opróżnić. Kiedy to zrobić za pomocą

$('#img').prop('src', null); 

src nie jest pusty, ale wskazuje na aktualny adres URL

jeśli usunąć src użyciu

$('#img').removeProp('src'); 

nigdy nie pozwól, aby przypisać go z powrotem w przyszłość

Jaki jest najlepszy sposób, aby to osiągnąć?

+1

proszę zobaczyć [ta odpowiedź] (http://stackoverflow.com/a/8425853/561731) – Neal

+0

Pusty ciąg w rzeczywistości może być poprawnym src na zdjęcie, technicznie rzecz biorąc go nie "usuwa" src. To samo, co '# ', użyłoby bieżącego adresu URL plus skrótu. Prawdziwy przykład: http://lcamtuf.coredump.cx/squirrel/ W końcu wysyłasz żądanie do bieżącego adresu URL. Proponuję zastosować inne podejście. –

Odpowiedz

8

Spróbuj użyć attr(),

Live Demo

$('#img').attr('src', ''); 

Jak masz selektor id. Korzystanie z natywnej metody javascript document.getElementById zapewni większą wydajność. Również może być konieczne ustawienie # jako src zamiast ciągu empty.

document.getElementById('img').src = "#"; 
+4

Obawiam się, że to nie działa. Wciąż wskazuje na bieżący URL zamiast mieć pustą wartość. – StackOverflower

+0

Dodałem wersję demonstracyjną na żywo w mojej odpowiedzi, sprawdź czy działa – Adil

+0

@Adil [to nie działa z prawdziwym obrazem] (http://jsfiddle.net/Vnj53/1/) – Neal

6

bym tylko dostęp do węzła pod nią <img> i ustawić wartość src do pusty ciąg.

$('#img')[ 0 ].src = '#'; 

Fiddle: http://jsfiddle.net/P4pRu/


Aktualizacja: Wygląda Chrome nie jest zadowolony, kiedy tylko przechodzą w pusty ciąg. Firefox wciąż pokazuje oczekiwane zachowanie (jestem prawie pewien, że działało to również w Chrome kilka tygodni temu).

Na przykład przepuszczenie na przykład # działa prawidłowo.


Aktualizacja 2:

Nawet imgNode.removeAttribute('src'); nie ma już usunąć wizualną reprezentację obrazu już w Chrome (ciekawe ...).

+1

Obawiam się, że to nie działa. Wciąż wskazuje na bieżący URL zamiast mieć pustą wartość. – StackOverflower

+1

@ TimmyO'Tool: istotnie. Dziwne zachowanie, które wydaje mi się "nowe". Działa to jednak, jeśli na przykład wpiszesz '# '. – jAndy

+2

Pusty ciąg znaków może w rzeczywistości być prawidłowym src dla obrazu, technicznie rzecz biorąc, nie "usuwa" src. To samo, co '# ', użyłoby bieżącego adresu URL plus skrótu. Prawdziwy przykład: http://lcamtuf.coredump.cx/squirrel/ W końcu wysyłasz żądanie do bieżącego adresu URL. –

0

Atrybut "src" nie jest tak naprawdę właściwością, jest atrybutem. Pomyśl o właściwościach, które można ustawić za pomocą wartości logicznych lub list i atrybutów jako rzeczy o wiele bardziej dynamiczne.

$('#img').attr('src', ''); 

Jak jQuery 1.6, metoda .prop() zapewnia sposób jawnie pobrać wartości nieruchomości, podczas gdy.attr() pobiera atrybuty - http://api.jquery.com/prop/

+0

Sprawdź odpowiedź, nie działa (chociaż twoje notatki są poprawne). –

+0

Tak, robi. Właśnie przetestowane w jsfiddle - http://jsfiddle.net/aAfvx/1/ –

+0

Wygląda na to, że jest to problem z Chrome, wypróbuj go w Chrome. –