Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在jQuery中切换show()和hide()状态的最佳方法_Javascript_Jquery_Html_Javascript Events - Fatal编程技术网

Javascript 在jQuery中切换show()和hide()状态的最佳方法

Javascript 在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

我有以下代码,可以在show prices
按钮的
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.。没有必要使用自定义事件。你可能还想通过比较有多少度假元素有“礼物”来检查是否显示了所有价格课堂上一共有多少人,就像这样