如何在append方法中执行if语句

时间:2012-07-20 18:52:41

标签: jquery append

我有一个功能,显示弹出窗口内有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。

因为它在附加功能中,我不知道如何做到这一点。

4 个答案:

答案 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);
});