2

我有一个显示弹出窗口的功能,里面有 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]则将选择的类添加到该标签

因为它在一个附加函数中,我不知道该怎么做。

4

4 回答 4

3

这看起来像是三元运算符的工作!

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>");
});
于 2012-07-20T18:58:43.493 回答
2

一种可能性是反转您的附加调用,使新对象成为返回,

var $image = $("<li><a rel='"+ (i+1) + "'><img src=" + val + "></a></li>").appendTo($ul);

if(whatever){
   $image.children("a").addClass("selected");
}

它使代码更整洁 IMO。

于 2012-07-20T18:57:06.280 回答
2

我认为您正在寻找三元运算符,它只是 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>");

(对不起,这对我来说真的很乱,但我相信这就是你要找的东西)

于 2012-07-20T18:57:14.007 回答
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);
});
于 2012-07-20T18:58:20.803 回答