如果 DIV 未隐藏,如何切换图像
How to switch image if DIV is not hidden
我有以下 JQuery,如果按下 DIV,它会显示一个菜单:
var pull = $('#mmTrigger');
menu = $('.ulMM');
menuHeight = menu.height();
$(pull).on('click', function(e) {
e.preventDefault();
menu.slideToggle();
});
HTML:
<div class="dvMain">
<ul class="ulMM specClear">
<li class="liMM"><a href="#" class="mmLink">Portfolio</a></li>
<li class="liMM"><a href="#" class="mmLink">About</a></li>
<li class="liMM"><a href="#" class="mmLink">Contact</a></li>
<li class="liMM"><a href="#" class="mmLink">Forum</a></li>
</ul>
<div id="mmTrigger"><img src="nav-icon.png" class="imgMenu" /></div>
</div>
我将脚本修改为:
$(pull).on('click', function(e) {
e.preventDefault();
menu.slideToggle();
if (menu.is(':hidden')) {
$(".imgMenu").attr("src", "nav-icon.png");
} else {
$(".imgMenu").attr("src", "iconx.png");
}
});
但是在单击 DIV 后,X
会保留并且不会在菜单关闭后返回到 nav-icon.png
。
如何解决才能使 X
变为菜单图标。
我添加了这条语句:alert (menu.is(':hidden'));
它总是 returns 错误。
您应该在 slideToggle
动画停止后更改图标。您可以在 callback
中这样做:
$(pull).on('click', function (e) {
e.preventDefault();
menu.slideToggle(function () {
// slideToggles callback
if (menu.is(':hidden')) {
$(".imgMenu").attr("src", "nav-icon.png");
} else {
$(".imgMenu").attr("src", "iconx.png");
}
});
});
尝试在完成幻灯片切换后更改图像:请参阅此处:http://api.jquery.com/slidetoggle/
$(document).ready(function(){
var pull = $('#mmTrigger');
menu = $('.ulMM');
menuHeight = menu.height();
$(pull).on('click', function(e) {
e.preventDefault();
menu.slideToggle("slow", function() {
alert( ! menu.is(":visible") );
if (! menu.is(":visible")) {
$(".imgMenu").attr("src", "https://maps.google.com/mapfiles/kml/shapes/schools_maps.png");// icons added to show demo use your own icons.
} else {
$(".imgMenu").attr("src", "http://labs.google.com/ridefinder/images/mm_20_black.png");
}
});
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="dvMain">
<ul class="ulMM specClear">
<li class="liMM"><a href="#" class="mmLink">Portfolio</a></li>
<li class="liMM"><a href="#" class="mmLink">About</a></li>
<li class="liMM"><a href="#" class="mmLink">Contact</a></li>
<li class="liMM"><a href="#" class="mmLink">Forum</a></li>
</ul>
<div id="mmTrigger"><img src="https://maps.google.com/mapfiles/kml/shapes/schools_maps.png" class="imgMenu" /></div>
</div>
我有以下 JQuery,如果按下 DIV,它会显示一个菜单:
var pull = $('#mmTrigger');
menu = $('.ulMM');
menuHeight = menu.height();
$(pull).on('click', function(e) {
e.preventDefault();
menu.slideToggle();
});
HTML:
<div class="dvMain">
<ul class="ulMM specClear">
<li class="liMM"><a href="#" class="mmLink">Portfolio</a></li>
<li class="liMM"><a href="#" class="mmLink">About</a></li>
<li class="liMM"><a href="#" class="mmLink">Contact</a></li>
<li class="liMM"><a href="#" class="mmLink">Forum</a></li>
</ul>
<div id="mmTrigger"><img src="nav-icon.png" class="imgMenu" /></div>
</div>
我将脚本修改为:
$(pull).on('click', function(e) {
e.preventDefault();
menu.slideToggle();
if (menu.is(':hidden')) {
$(".imgMenu").attr("src", "nav-icon.png");
} else {
$(".imgMenu").attr("src", "iconx.png");
}
});
但是在单击 DIV 后,X
会保留并且不会在菜单关闭后返回到 nav-icon.png
。
如何解决才能使 X
变为菜单图标。
我添加了这条语句:alert (menu.is(':hidden'));
它总是 returns 错误。
您应该在 slideToggle
动画停止后更改图标。您可以在 callback
中这样做:
$(pull).on('click', function (e) {
e.preventDefault();
menu.slideToggle(function () {
// slideToggles callback
if (menu.is(':hidden')) {
$(".imgMenu").attr("src", "nav-icon.png");
} else {
$(".imgMenu").attr("src", "iconx.png");
}
});
});
尝试在完成幻灯片切换后更改图像:请参阅此处:http://api.jquery.com/slidetoggle/
$(document).ready(function(){
var pull = $('#mmTrigger');
menu = $('.ulMM');
menuHeight = menu.height();
$(pull).on('click', function(e) {
e.preventDefault();
menu.slideToggle("slow", function() {
alert( ! menu.is(":visible") );
if (! menu.is(":visible")) {
$(".imgMenu").attr("src", "https://maps.google.com/mapfiles/kml/shapes/schools_maps.png");// icons added to show demo use your own icons.
} else {
$(".imgMenu").attr("src", "http://labs.google.com/ridefinder/images/mm_20_black.png");
}
});
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="dvMain">
<ul class="ulMM specClear">
<li class="liMM"><a href="#" class="mmLink">Portfolio</a></li>
<li class="liMM"><a href="#" class="mmLink">About</a></li>
<li class="liMM"><a href="#" class="mmLink">Contact</a></li>
<li class="liMM"><a href="#" class="mmLink">Forum</a></li>
</ul>
<div id="mmTrigger"><img src="https://maps.google.com/mapfiles/kml/shapes/schools_maps.png" class="imgMenu" /></div>
</div>