使用jQuery,我正在努力做一个快速的&更改控件按钮(#ctrlBtn)的innerHtml文本以使用html()方法反映div的slideToggle()状态的脏方法。我似乎无法理解它。它会在第一次点击时更改按钮文字,但那就是它...... 这是代码:
<script type="text/javascript">
$(document).ready(function(){
$("#StatsDetail").slideToggle(); //hide it to start
$("button").click(function(){
$("#StatsDetail").slideToggle(); //show/hide
// the next line is not working even w/standard if/else syntax...
($("#ctrlBtn").html!="Hide") ? $("#ctrlBtn").html("Hide") : "#ctrlBtn").html("View");
}); //end-onClick
}); //end-onLoad
</script>
<span class="right"><button><div id="ctrlBtn">View/Hide Details</div></button></span>
<div id="StatsDetail"> Lorem ipsum yadda yadda blah </div>
我甚至尝试过
if ($("#statsDetail").is(":visible")) {
$("#ctrlBtn").html("Hide");
} else {
$("#ctrlBtn").html("View");
}
我知道我必须错过一些非常愚蠢的东西。任何帮助将不胜感激。
Joe Negron~NYC
答案 0 :(得分:3)
完成幻灯片动画后,这将使用回调函数执行您想要的操作:
$("button").click(function() {
$("#StatsDetail").slideToggle(function() {
$('#ctrlBtn').text($(this).is(':visible')? 'hide' : 'show');
});
});
它的工作方式是在#StatsDetail
上完成slideToggle后执行定义的回调函数。然后,它会检查#StatsDetail
是否可见,并相应地设置按钮text()。
你可以看到它in action here。
答案 1 :(得分:1)
我会试一试:
var ctrlBtn = $("#ctrlBtn");
var statsDetail = $("#StatsDetail");
statsDetail.hide(); //hide it to start
ctrlBtn.click(function(){
statsDetail.slideToggle();
ctrlBtn.text( ((ctrlBtn.text() === 'Hide') ? 'View' : 'Hide') );
});
你想要注意的事情:
hide()
。你不仅可以立即明白自己在做什么,还可以避免滑动效果带来的动画(或者,如果你做意味着拥有动画,那么使用slideUp()
) div
放在button
中 - 它不是有效的HTML。将id
改为button
,然后使用display: inline-block