2015-04-01 16 views
5

Próbowałem stworzyć efekt, w którym użytkownik klika obraz, zastąpiony przez inny obraz, który również działa jako łącze.Link nie działa na obrazie?

Jednak mój problem polega na tym, że po kliknięciu zastąpionego obrazu łącze nie działa.

Fiddle: http://jsfiddle.net/ha6qp7w4/321/

$('.btnClick').on('click',function(){ 
    $(this).attr('src','https://placekitten.com/g/200/300') 
    $(this).attr('href','google.com') 
}); 
+0

Szukasz czegoś podobnego do tego http://jsfiddle.net/akshay7/ha6qp7w4/309/? – Akshay

+0

tak! Ale czy wiesz, dlaczego link nie działa? Nawet jeśli zamienię href na "google.com". – KingAlfredChameleon

+0

Twój kod wydaje się bardzo skomplikowany ... Dlaczego nie używasz $ ('# yourImg'). Show() i $ ('# yourImg'). Hide()? Lub, myślę, że możesz zastąpić atrybut src ... –

Odpowiedz

-1

tutaj jest przykładem.

example

część html

<img src="http://i.imgur.com/o46X87d.png" data-new="http://i.imgur.com/9lf2Mjk.png" id="1" class="btnClick" /> 

dodać dane nowy atrybut na obrazek z nowego adresu URL obrazu i zastąpić go js

$('.btnClick').on('click',function(){ 
    var url = $(this).attr("data-new"); 

    $(this).attr("src", url); 
}); 
-1

chciałbym użyć zupełnie innego podejścia , ale oto jak to zrobić z kodem, który już masz:

<div class="btnClick"> 
<img src="http://i.imgur.com/o46X87d.png" id="1" /> 
<a href="javascript:check()" id="2" style="display:none;"> 
    <img src="http://i.imgur.com/9lf2Mjk.png" id="static" /> 
</a> 
</div> 

<script type="text/javascript"> 
$('.btnClick').on('click',function(){ 
    if($('#1').is(':visible')) { 
     $('#1').hide(); 
     $('#2').show(); 
    } else { 
     $('#1').show(); 
     $('#2').hide(); 
    } 
}); 
</script> 

Celowo nie używać toggle() aby lepiej pokazać techniki, w przypadku, że chcesz, aby włączyć zdarzenie click wyłączony, gdy obraz pojawia kliknięcie itp

2

img tagi nie mają href właściwości. Musisz zawinąć obraz w kotwicę i przypisać mu adres URL lub wykonać niestandardowe przekierowanie.

Zauważ swoim dysku html na kontroli elementu:

<img src="https://placekitten.com/g/200/300" id="1" class="btnClick" href="google.com"> <!-- not valid! --> 

To nie jest ważne, ponieważ imgs nie są kotwice!

function first() { 
    this.src = 'https://placekitten.com/g/200/300'; 
    $(this).unbind("click"); 
    $(this).on("click", second); 
} 

function second() { 
    window.location.href = "https://www.google.com"; 
    $(this).unbind("click"); 
    $(this).on("click", first); 
} 

$('.btnClick').on('click', first); 

(próbowałem zrobić skrzypce, ale nie uratuje, ale to powinno działać)

trzeba przechowywać swoje działania w funkcje, dzięki czemu można przywrócić w razie potrzeby. Pierwsza czynność to zmiana źródła, a następnie zmiana zdarzenia, aby przekierować cię jak link.

+0

Thx Sterling bae <3, szkoda, że ​​link nie działał, ale fajnie spróbuj: – KingAlfredChameleon

+0

Wygląda na to, że jsfiddle się zepsuł, to nie zapisało moich funkcji. Lemme spróbuj ponownie –

+0

Wypróbuj kod teraz –