我有一个功能,显示弹出窗口内有8个缩略图。在弹出窗口中有一个默认选择的缩略图。
我想要做的是,在我的循环中,我想检查缩略图rel属性(1到8)。如果它与默认选择的匹配,我想添加一个选定的状态。
生成8个缩略图的代码:
jQuery.each(videos[id], function(i, val) {
$ul.append("<li><a rel='"+ (i+1) + "'><img src=" + val + "></a></li>");
});
我也有一个包含从1到8的数字的变量(这是应该有所选类的数字)
alreadySelectedThumb[id]
基本上,逻辑(单词)是:
循环通过视频数组,如果 a 标记的rel属性等于 alreadySelectedThumb [id] ,则将选定的类添加到 a < / em> tag。
因为它在附加功能中,我不知道如何做到这一点。
答案 0 :(得分:3)
这看起来像Ternary Operator的工作!
jQuery.each(videos[id], function(i, val) {
var class = (i+1) === alreadySelectedThumb[id] ? 'myClass' : '';
$ul.append("<li><a rel='"+ (i+1) + "' class='"+ class +"' ><img src=" + val + "></a></li>");
});
答案 1 :(得分:2)
一种可能性是撤销你的追加调用,使新对象成为回归,
var $image = $("<li><a rel='"+ (i+1) + "'><img src=" + val + "></a></li>").appendTo($ul);
if(whatever){
$image.children("a").addClass("selected");
}
它使代码更加整洁IMO。
答案 2 :(得分:2)
我认为你正在寻找ternary operators,它只是Javascript(以及许多其他语言)的一部分。
if (videos[id] == alreadySelectedThumb[id]) {
something = "FOO";
} else {
something = "BAR";
}
反而写成:
something = (videos[id] == alreadySelectedThumb[id]) ? "FOO" : "BAR";
可以将其插入到这样的字符串赋值中:
$ul.append("<li" +
((videos[id] == alreadySelectedThumb[id]) ? ' class="selected" ' : '') +
"><a rel='" + (i+1) + "'><img src=" + val + "></a></li>");
(对不起,这对我来说看起来很麻烦,但我相信这就是你要找的东西)
答案 3 :(得分:2)
jQuery.each(videos[id], function(i, val) {
var appendstr ="";
if(/*select condition is true*/)
appendstr = "<li><a rel='"+ (i+1) + "'><img src=" + val + " class='selectclass'></a></li>"
else
appendstr = "<li><a rel='"+ (i+1) + "'><img src=" + val + "></a></li>"
$ul.append(appendstr);
});