![](/img/trans.png)
[英]div click not working after showing div by Jquery slideToggle and run server code by hidden button in updatepanel
[英]On click slideToggle multiple hidden div
我有的 :
HTML
<div id="content1"></div>
<div id="content2"></div>
<div id="content3"></div>
<div class="content1" style="display:none"></div>
<div class="content2" style="display:none"></div>
<div class="content3" style="display:none"></div>
s
$(document).ready(function() {
$('#content1').click(function() {
$(' .content2, .content3 ').slideUp({
style: "height",
speed: "slow",
complete: function() {
$(' .content1').slideToggle("slow")
}
});
});
$('#content2').click(function() {
$(' .content1, .content3 ').slideUp({
style: "height",
speed: "slow",
complete: function() {
$(' .content2').slideToggle("slow")
}
});
});
$('#content3').click(function() {
$(' .content1, .content2 ').slideUp({
style: "height",
speed: "slow",
complete: function() {
$(' .content3').slideToggle("slow")
}
});
});
});
我想要的是
您可以使用通用类对代码进行重构,然后使用带有promise().done()
回调的以下逻辑,对于所有集合仅调用一次:
$(document).ready(function() { $('.for_content').click(function() { var i = $(this).index('.for_content'); $('.content:not(:eq(' + i + '))').slideUp({ style: "height", speed: "slow" }).promise().done(function() { $('.content').eq(i).slideToggle("slow") }); }); });
* { padding: 0px; margin: 0px; overflow: hidden; } ul { list-style-type: none; margin: 0; padding: 0; overflow: hidden; background-color: #222; } li { float: left; } .link { display: inline-block; color: white; text-align: center; padding: 10px; margin-left: 10px; margin-right: 10px; text-decoration: none; cursor: pointer; } .link:hover { text-shadow: 0px 1px 10px #fff; } .content1 { height: 400px; width: 100%; top: 0; background-color: #333; } .content2 { height: 400px; width: 100%; top: 0; background-color: #444; } .content3 { height: 400px; width: 100%; top: 0; background-color: #555; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <div> <ul> <li> <a href="#"><span class="link">Home</span></a> </li> <li> <div class="link for_content" id="content1">Link 1</div> </li> <li> <div class="link for_content" id="content2">Link 2</div> </li> <li> <div class="link for_content" id="content3">Link 3</div> </li> </ul> </div> <div> <div class="content content1" style="display: none"> <h1> CONTENT 1 </h1> </div> <div class="content content2" style="display: none"> <h1> CONTENT 2 </h1> </div> <div class="content content3" style="display: none"> <h1> CONTENT 3 </h1> </div> </div>
您可以使用如下形式:
$('div[id^=content]').click(function () {
var name = $(this).attr('id');
$('div[class^=content]:visible').slideUp('slow', function() {
$('.' + name).slideDown('slow');
});
});
希望对您有所帮助。 :-)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.