2012-07-20 60 views
2

我有一個函數,顯示裏面有8個縮略圖的彈出窗口。在彈出窗口中有一個默認的縮略圖。如何在追加方法內執行if語句

我想要做的是,在我的循環中,我想檢查縮略圖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標記。

因爲它在一個附加功能,我不知道如何做到這一點。

回答

2

一種可能是扭轉你的追加調用使得新對象的回報,

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

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

它使代碼更簡潔IMO。

+0

工作完美,謝謝! – Lelly 2012-07-20 19:12:36

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>"); 

(對不起,看起來非常的混亂給我,但我相信這就是你要找的)

+0

看起來不錯,但那不行!所選班級永遠不會被添加! – Lelly 2012-07-20 19:07:32

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); 
}); 
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>"); 
});