如果找到类,如何隐藏元素
我试图弄清楚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是这样的:
More something or another
执行.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的数据缓存中,以便稍后可以将显示恢复到其初始值。 如果元素的显示值为内联并且隐藏然后显示,则它将再次以内联方式显示。
除了一些vs Internet Explorer之外,所有主流浏览器都支持隐藏属性。 隐藏属性不得用于隐藏可合法显示在另一个演示文稿中的内容。 例如,使用隐藏来隐藏选项卡式对话框中的面板是不正确的,因为选项卡式界面仅仅是一种溢出显示 – 同样可以通过滚动条在一个大页面中显示所有表单控件。 使用此属性仅从一个演示文稿中隐藏内容同样不正确 – 如果某些内容被标记为隐藏,则会隐藏所有演示文稿,例如屏幕阅读器。
属性与属性
在特定情况下,属性和属性之间的差异可能很重要。 在jQuery 1.6之前,.attr()方法有时在检索某些属性时会考虑属性值,这可能会导致行为不一致。 从jQuery 1.6开始,.prop()方法提供了一种显式检索属性值的方法,而.attr()则检索属性。
例如,应检索selectedIndex,tagName,nodeName,nodeType,ownerDocument,defaultChecked和defaultSelected,并使用.prop()方法进行设置。 在jQuery 1.6之前,这些属性可以使用.attr()方法检索,但这不在attr的范围内。 它们没有相应的属性,只是属性。