[英]Show/Hide using toggle jQuery
jQuery脚本
这段代码有效,但是可以在slideToggle方法中添加“选项”,以便切换“显示/隐藏”文本吗?
$(function() {
var container = $('div.container p'),
button = $('div#click');
container.hide();
button.on('click', function() {
if (button.text() == 'Show') {
button.text('Hide');
} else {
button.text('Show');
}
$(this).next().slideToggle(300);
});
});
您可以继续尝试一下。 如果您希望在单击按钮后立即触发回调,也可以将“完成”选项更改为“开始”。
演示:这是 一个骗局
var container = $('div.container p');
var button = $('div#click');
container.hide();
button.on('click', function(){
container.slideToggle({
duration: 200,
complete: function(){
var txt = (button.text() === 'Show') ? "Hide" : "Show";
button.text(txt);
}
});
});
我可以建议更好的方法。 这个想法是你不应该将你的按钮文本硬编码为javascript代码。 它使代码非常突兀且紧密耦合,因为如果您决定将文本从“显示”更改为“显示更多”,您还必须修改javascript代码。 相反,您可以同时使用两个标签,但一次只显示一个:
<div id="click"><span class="show">Show</span><span class="hide">Hide</span></div>
使用Javascript:
button.on('click', function () {
button.toggleClass('hide');
$(this).next().slideToggle(300);
});
和CSS:
div#click > span {
display: none;
}
div#click .show {
display: inline-block;
}
div#click.hide .hide {
display: inline-block;
}
div#click.hide .show {
display: none;
}
UPD。 显然有人不同意我的看法。 但很容易看出,稍微增加的代码量的好处比它可能首先看到的要大。 上述方法比文本字符串更灵活。 更不用说它还允许按钮的高级样式与图像和其他元素,这可能是硬编码字符串的问题。
你不能这样做,但你可以简化三元运算符。
button.text(function(_, txt){
return txt == "Show" ? "Hide" : "Show"
}).next().slideToggle(300);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.