2015-09-18 3 views
1

Я пытаюсь одновременно переключать изображение и другой div. У меня это так, что, когда вы нажимаете на изображение, изображение переключается и показывает другой div, но когда вы нажимаете снова, изображение не переключается обратно. Что мне недостает, чтобы сделать это так, чтобы он переключился?jQuery переключить обмен изображения и показать скрыть еще один div

$("#swap").click(function() { 
 
    $("#swap-nav").toggle("slow", function() {}); 
 
}); 
 

 

 
$('#swap-img').click(function() { 
 
    this.src = 'i/icon.png'; 
 
}, function() { 
 
    this.src = 'i/close.png'; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<li id="swap"> 
 
    <img id="swap-img" src="i/icon.png" data-swap="i/close.png"> 
 
</li> 
 
<div id="swap-nav"> 
 
    <li>one</li> 
 
    <li>two</li> 
 
</div>

+2

возможно дубликат [JQuery клик/переключения между двумя функциями] (http://stackoverflow.com/questions/4911577/jquery-click-toggle-between-two-functions) – lmgonzalves

ответ

2

Я бы объединить два в одном случае, например, так:

$("#swap").click(function() { 
 
    $("#swap-nav").toggle("slow", function() {}); 
 
    var img = $('img[data-swap]',this); 
 
    var temp = img[0].src; 
 
    img[0].src = img.data('swap'); 
 
    img.data('swap',temp); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<li id="swap"> 
 
    <img src="http://placehold.it/25x25" data-swap="http://placehold.it/25x25/00ff00"> 
 
</li> 
 
<div id="swap-nav"> 
 
    <li>one</li> 
 
    <li>two</li> 
 
</div>

+0

Обновленный ответ выбрать IMG с атрибутом data-swap, на всякий случай, если в вашем окончательном решении есть другие изображения. –

1

Возможно, это может помочь!

$('#swap-img').click(function() { 
    this.src = (this.src=='i/icon.png')?'i/close.png':'i/icon.png'; 
}); 
+0

Это сломается, если браузер вернет значение, отличное от того, которое вы положили в него (что некоторые делают!). Например, подача файла 'i/icon.png' может вернуть полный URL-адрес, например' http: // mysite/i/icon.png'. –