如果找到类,如何隐藏元素
How to approach hiding an element if class is found
我仍然在努力弄清楚jquery,在我的尝试中,我不仅试图弄清楚如何使用各种东西,还试图弄清楚为什么,我还没有测试过任何东西,所以甚至不确定它是否有效(如果我的代码很糟糕,请提前道歉);然而,对于jquery,似乎有无数种方法可以处理所有问题,那么什么是最好的方法呢?如果没有列出,有什么更好的方法?为什么?
如果存在.active
类,则此代码用于显示/隐藏元素。
if($('.active').length > 0){
$('.more').attr('hidden').animate({opacity: "1"}, 200);
/* ...or should I use
$('.more').prop('hidden');
*/
}
或者类似的东西?
if($('.active').length > 0){
$('.more).is(':hidden');
}
if($('.active').length === 0);
$('.more').not(':hidden');
}
还是仅仅添加/删除类更合适?
if($('.active').length > 0){
$('.more).addClass('hidden').fadeOut('fast');
}
if($('.active').length === 0);
$('.more').removeClass('hidden').fadeIn('fast');
}
还是应该像这样显示/隐藏项目?
if($('.active').length > 0){
$('.more).hide('fast');
}
if($('.active').length === 0);
$('.more').show('fast');
}
假设HTML是这样的:
<p class="more">More something or another</p> <!-- hidden if .active exists -->
<ul>
<li class="active"></li> <!-- active added dynamically if selected -->
<li></li>
</ul>
执行.active
切换的代码正在工作,如下所示:
$(document).ready(function() {
$('.vl-toggle-link').click(function(e) {
e.preventDefault();
$(this).siblings('.content').slideToggle(function(){
var offsetTop = $(this).parent().offset().top;
$('body,html').stop().animate({scrollTop: offsetTop-20 });
}).parent('li').toggleClass('active').siblings('li').removeClass('active').children('.content').slideUp();
});
)};
toggleClass
:怎么样
$('.more').toggleClass('hidden', !!$('.active').length))
然后通过CSS转换添加动画:
.more { -webkit-transition:opacity 500ms; opacity:1 }
.hidden { opacity:0 }
有很多方法可以"做事情",但归根结底,这是一个编写高性能、"可理解"的代码并与浏览器支持保持一致的问题。jQuery API确实有一些很棒的方法,这些方法在其命名约定中也具有自平面性。
使用类和CSS转换可以很好地将逻辑与表示分离,其他同事也可以很容易地连接到CSS中,而不必为内联样式而烦恼。
IMO最好的解决方案是使用类,因为每个浏览器都支持它们。
animate()方法允许我们创建动画效果,如果您想要平滑过渡,请使用它。
使用$(...).hide()
,匹配的元素将立即隐藏,而不显示动画。这大致相当于调用.css("display","none"),只是display属性的值保存在jQuery的数据缓存中,以便以后可以将display恢复到其初始值。如果一个元素的显示值为inline,并且被隐藏然后显示,那么它将再次以内联方式显示。
所有主要浏览器都支持隐藏属性,除了Internet Explorer的某些版本。隐藏属性不能用于隐藏可以在其他演示文稿中合法显示的内容。例如,在选项卡式对话框中使用"隐藏"来隐藏面板是不正确的,因为选项卡式界面只是一种溢出表示——同样可以在一个带有滚动条的大页面中显示所有表单控件。同样,使用此属性仅从一个演示文稿中隐藏内容也是不正确的——如果某个内容被标记为隐藏,则它将从所有演示文稿中被隐藏,例如,包括屏幕阅读器。
属性与属性
属性和属性之间的差异在特定情况下可能很重要。在jQuery 1.6之前,.attr()方法在检索某些属性时有时会考虑属性值,这可能会导致不一致的行为。从jQuery 1.6开始,.pr()方法提供了一种显式检索属性值的方法,而.attr()则检索属性。
例如,selectedIndex、tagName、nodeName、nodeType、ownerDocument、defaultChecked和defaultSelected应使用.pro()方法进行检索和设置。在jQuery1.6之前,可以使用.attr()方法检索这些属性,但这不在attr的范围内。这些没有相应的属性,只是属性。
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- JavaScript-在手机上不工作的情况下,在外部单击时隐藏元素
- 随时隐藏元素
- 根据特定条件使用ng显示/ng隐藏来显示/隐藏元素
- 隐藏元素直到加载完成(ng斗篷不是我需要的)
- 在具有类的元素中隐藏元素
- javascript()onclick隐藏元素-dos'我不在firefox工作
- JQueryHide()在按钮中使用元素时不会隐藏元素
- 使用Javascript取消隐藏元素
- 如果鼠标离开父对象,则隐藏元素
- 如何在jquery ajax成功html响应中找到输入隐藏元素
- 基于事件在循环中隐藏元素
- 渐进式增强-不使用CSS隐藏元素
- 隐藏元素后更新滚动条
- jQuery没有隐藏元素
- jQuery隐藏元素在使用CSS显示时保持隐藏状态
- 如何使用javascript在区域外单击时隐藏元素
- 如何在加载网页时隐藏元素
- JS:隐藏元素上的事件侦听器
- HTML 显示/隐藏元素 JS 不起作用