- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
基本上,我将过滤/排序脚本与图库/缩略图脚本结合在一起。除了在单击新图像时更改元素的不透明度外,一切都很好。 IE。单击新缩略图,淡化为 1.0,旧缩略图淡化为 0.3。
我可以解决一个问题,但又会发生另一个问题。
例如:
我可以让前一个元素淡入 0.3 不透明度,让新元素淡入 1.0,但只能通过使用以下命令选择整个列表:#thumbs ul.thumbs li
。这非常有效,但是当过滤器启动并且您只显示 3/9 的列表项时,当您单击另一个缩略图时,所有内容都会淡化回 0.3,从而导致所有缩略图重新出现。
我正在考虑使用计数器向单击的元素添加一个类,然后如果应用该类,该元素将淡化回 0.3,然后删除该类。像这样。
$("#thumbs ul.thumbs li").click( function()
{
if($("#thumbs ul.thumbs li").hasClass("counter")) {
$("#thumbs ul.thumbs li").fadeTo('fast', 0.3);
$(this).removeClass("counter");
}
$(this).addClass("counter");
$(this).fadeTo('fast', 1.0);
});
我很清楚我的问题出在哪里。尝试将列表淡化回 0.3
。我想不出要使用的选择器会选择一个有计数器的类,然后将其淡出。我尝试了 this
但这当然适用于点击的元素。
我想选择应用了计数器样式的元素 #thumbs ul.thumbs li .counter
然后将特定元素 li
元素淡化回 0.3
。
必须这样做的原因是图库/缩略图脚本强制元素 li
不透明。现在我试图通过自己的方式找到它,但我找不到,所以我想写一个脚本来覆盖它。
正如我上面提到的,我在不考虑过滤器的情况下让它工作。
我想到的另一个选择是尝试找到之前单击的元素并将不透明度应用于该列表元素。
我正在使用 Galleriffic 示例 2 - 缩略图和图库以及 MixitUp。
我知道会有不兼容性,但除了不透明之外,我已经让一切正常工作。现在如此如此如此如此接近。
如有任何帮助,我们将不胜感激。如果需要,我可以提供更多信息。
我相信我所缺少的只是正确的选择器。我正处于无法让自己摆脱阻碍我思考正确选择器的困境的阶段。我是如此接近,但我就是想不起来。我知道它最终会变得简单,我会因为写下所有这些而自责。 DOM 让我很沮丧。在遵循画廊/缩略图代码的同时,试图让 parent 和 sibling 都正确。
干杯
编辑:
使用下面 Jack Donnelly 的方法,我能够解决我面临的问题。但是,即使没有匹配的过滤器,缩略图仍会添加到列表中。这行得通,但我想这样做,这样我就不必每次都为每个过滤器调用代码:
if ($("#filter-controls li.web").hasClass("filter-selected")){
if ($(this).hasClass("web")){
// Select our `li` element with the `.counter` class
var $counter = $("#thumbs ul.thumbs li.counter");
// Check whether this element exists
if ($counter.length > 0) {
// If it does exist, make it fade out
$counter.fadeTo('fast', 0.3);
// Finally, remove the counter class from our counter element
$counter.removeClass("counter");
}
$(this).addClass("counter");
$(this).fadeTo('fast', 1.0);
}
}
我在下面遇到过这个问题,但在使用我现有的代码实现它时遇到了问题:
jQuery: How to check if two elements have the same class
编辑:我最终通过删除 fadeto 并使用一个类来解决这个问题。虽然我不喜欢使用 !important
,但在这种情况下,这确实是唯一不会让人头疼的方法。
$("#thumbs ul.thumbs li").click( function()
{
var $counter = $("#thumbs ul.thumbs li.counter");
// Check whether this element exists
if ($counter.length > 0) {
$counter.removeClass("counter");
}
$(this).addClass("counter");
});
CSS 有这个:
.counter {
opacity: 1.0 !important;
}
这很好也很简单,并且在使用过滤器时不会重置类,将当前所选元素的不透明度保持在 1.0
。
比预期更好的结果。
最佳答案
这部分代码是您的问题所在:
if($("#thumbs ul.thumbs li").hasClass("counter")) {
$("#thumbs ul.thumbs li").fadeTo('fast', 0.3);
$(this).removeClass("counter");
}
$(this).addClass("counter");
这段代码:
#thumbs ul.thumbs li
选择器提取的任何 li
元素是否有 .counter
类;li
元素淡化为 0.3 不透明度;this
中删除 .counter
类,而不是从具有 .counter
类的元素中删除;.counter
类返回给 this
。if
语句中的 this
指的是被点击的 li
元素; 不是具有.counter
选择器的li
元素。
如果没有看到您的代码,我无法给出 100% 准确的答案,但我可以猜测这就是您需要的:
// Select any li element with the counter class
var $counter = $("#thumbs ul.thumbs li.counter");
// Check whether any $counter elements exist
if ($counter.length > 0) {
// If they does exist, make them fade out
$counter.fadeTo('fast', 0.3);
// Finally, remove the counter class from them
$counter.removeClass("counter");
}
// Add the counter class to the li element which was clicked on
$(this).addClass("counter");
关于hasClass 或先前单击的元素的 JQuery 选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21160308/
我的应用将 SceneKit 内容的“页面”与图像和文本交替。当我从图像页面前进到新的 SceneKit 页面时,前一个 SceneKit 页面中的内容会短暂显示,然后被新内容替换。时髦。 我只使用一
我正在尝试处理(在 C# 中)包含一些数字数据的大型数据文件。给定一个整数数组,如何对其进行拆分/分组,以便如果下一个 n(两个或更多)是负数,则前一个 n 元素被分组。例如,在下面的数组中,应该使用
刚接触promises,研究过。所以我的代码和我的理解: sql.connect(config).then(function(connection) { return connection.req
目前我在 if (roobaf) block 中有一些代码,这取决于 foo 和 bar 是否为假。我可以在 block 内再次检查这些条件,但感觉像是不必要的代码重复。 if (foo) {
我是一名优秀的程序员,十分优秀!