我有 500 <p>
元素,每个元素大约有 500 <span>
css 设置为不透明度 1 的元素。
如果我$('p').css( 'opacity', .5 )
,一切都在瞬间更新。
如果我$('p span').css( 'opacity', .5 )
,更新需要几秒钟。明显地。它迭代每个元素。
我的问题是:给定任意一组 <span>
不同的元素<p>
元素,有没有一个好方法可以让除了这些跨度之外的所有内容都更改为不透明度 0.5?
我试过not 。
$('p').not( $('p span').slice( 5, 600) ).css( 'opacity', .5 )
不起作用——可能是因为我正在执行集合代数以将 child 从 parent 中删除。我希望它能隐式地起作用。唉。
有什么好的方法可以解决此类问题吗? Here's a fiddle .
$('p span').not( $('p span').slice( 5, 600) ).css( 'opacity', .5 )
有效...但速度很慢:-/
最佳答案
我不能保证这会在这么多元素下表现良好,你可以这样做:
$("p > *").not("span").css("opacity", 0.5);
这将获取 <p>
的所有子对象标签,然后删除 <span>
在应用不透明度之前从该集合中获取元素。所以只有<span>
<p>
内的元素将不受影响标签。
仅供引用,如果您需要它表现良好,那么直接遍历树可能会比这快很多倍。在某些地方,直接 JS 代码比选择器操作快得多。
关于jquery - 创建一组没有特定 child 的 parent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12084135/