Javascript 在jQuery中切换show()和hide()状态的最佳方法
我有以下代码,可以在show pricesJavascript 在jQuery中切换show()和hide()状态的最佳方法,javascript,jquery,html,javascript-events,Javascript,Jquery,Html,Javascript Events,我有以下代码,可以在show prices按钮的hide()和show()状态之间切换。我知道jQuery中有。toggle()。但是在这个例子中我找不到解决方法。 当我单击按钮时,元素被附加到div中的.msg类中,当我再次单击它时,它通过从DOM(在else块中)移除元素来隐藏它的状态 我已经设法想出了一个解决方案,它使用If..else,效果很好,但它感觉不正确,也不是最好的方法。我觉得这个解决方案很幼稚,想知道我能做些什么来进一步优化这段代码 代码如下: (函数(){ //$('.no
按钮的hide()
和show()
状态之间切换。我知道jQuery中有。toggle()
。但是在这个例子中我找不到解决方法。
当我单击按钮时,
元素被附加到div
中的.msg类中,当我再次单击它时,它通过从DOM(在else
块中)移除
元素来隐藏它的状态
我已经设法想出了一个解决方案,它使用If..else
,效果很好,但它感觉不正确,也不是最好的方法。我觉得这个解决方案很幼稚,想知道我能做些什么来进一步优化这段代码
代码如下:
(函数(){
//$('.notinterest').hide();
$('.msg').hide();
var showPrice=函数(e){
e、 停止传播();
var vacation=$(this).closest('.vacation');
var button=vacation.find('button');
if((!vacation.hasClass('present')){
var价格=+休假数据(“价格”);
var vacation_place=vacation.find('h3').text();
var msg=$(“+vacation_place+”的价格为:“(3*Price)+“”;
休假.find('.msg').prepend(msg.show();
假期。addClass(“当前”);
}else if((e.type=='click'&&e.toElement.localName=='button')| | e.type=='showAll'){
//log(e.toElement.localName);
//休假时间('单击','按钮')){
//console.log(如toElement);
//log(休假.on('click','button').context);
//控制台日志(按钮);
假期。移除类(“当前”);
休假.find('.msg').hide().find('p').remove();
}
};
var removePrice=函数(e){
e、 停止传播();
var vacation=$(this).closest('.vacation');
find('div.msg').hide();
//休假时间('click.price','button',showPrice);
};
$('.vacation')。on('click.show','button',showPrice);
$('.vacation').on('showAll.price',showPrice);//创建自定义事件
$('show all price')。在('click',函数(e)上{
e、 预防默认值();
$('.vacation').trigger('showAll.price');//单击锚点时触发自定义事件
});
})();
body,
保险商实验室{
字体大小:100%;
保证金:0;
填充:0;
字体系列:“无衬线”;
颜色:#fff;
}
.全部展示{
宽度:100px;
背景#597C80;
边缘顶部:25px;
左边距:25px;
边框:1px实心#2A3F41;
}
.展示给大家看{
显示:块;
文字装饰:无;
颜色:#333;
文本对齐:居中;
填充:10px;
字体大小:13px;
}
保险商实验室{
列表样式:无;
边缘顶部:20px;
左边距:20px;
浮动:左;
}
李{
浮动:左;
显示:块;
填充:10px;
背景:#2A3F41;
右边距:10px;
垫底:25px;
}
李华3{
文本对齐:居中;
}
李>司{
宽度:80%;
保证金:0自动;
}
li按钮{
宽度:100%;
背景#377C37;
颜色:#333;
边界:无;
大纲:0;
光标:指针;
填充:5px9px;
}
按钮:激活{
位置:相对位置;
顶部:2个;
/*填充:8px 13px 6px*/
}
李阿{
显示:块;
边缘顶部:10px;
文本对齐:居中;
文字装饰:无;
颜色:#597C80;
}
-
夏威夷假期
显示所有价格
-
美国假期
显示所有价格
-
法国度假
显示所有价格
你的问题不是很清楚。你想隐藏和显示什么,为什么切换不做你需要做的事?打开和关闭和有什么关系,它们是用于事件处理程序的,与切换可见性无关。如果你有可用的代码,并且你正在寻求帮助来改进样式,一个更好的发布位置是codereview.stackexchange.com。关于如何使代码正常工作的帮助也是如此。请尝试e.toElement.localName=='button'
,而不是$(this).is(“button”)
@barmar.Oh抱歉,我忘记提了。我会编辑这个问题。顺便说一句,你可以运行代码片段,自己检查一下,当我单击show prices按钮时,
If show and hide.。没有必要使用自定义事件。你可能还想通过比较有多少度假元素有“礼物”来检查是否显示了所有价格课堂上一共有多少人,就像这样