2016-05-24 65 views
-1

我不確定我是否問這個問題,但基本上我試圖簡化我的代碼,所以我不必寫5次相同的東西。 我在下面列出了兩個樣本。你可以看到唯一改變的是event.X和「.ia-event-x」。簡化兩個變量的代碼?

// For title 
if (event.title) { 
    $(".ia-event-title").html(event.title); 
    $(".ia-event-title").addClass('ia-populated'); 
} 
else if (!event.title) { 
    $(".ia-event-title").removeClass('ia-populated'); 
} 

// For Description 
if (event.description) { 
    $(".ia-event-description").html(event.description); 
    $(".ia-event-description").addClass('ia-populated'); 
} 
else if (!event.description) { 
    $(".ia-event-description").removeClass('ia-populated'); 
} 
+0

是的,在類名數組上使用循環。請嘗試向我們展示您的方法。 – Bergi

+0

這裏既沒有循環也沒有數組...... –

+0

我的意思是,你可以。但看起來你已經兩次寫過同樣的東西,所以我沒有看到很多優勢。你也可以創建一個函數並將參數傳遞給它,這可能是一個更好的方法。 – Devsman

回答

0

我創建了一個函數,可以根據需要傳遞我的參數。

function createPopupContent(eventParameter, eventClass) { 
    if (eventParameter) { 
    $(eventClass).html(eventParameter); 
    $(eventClass).addClass('ia-populated'); 
    } 
    else if (!eventParameter) { 
    $(eventClass).removeClass('ia-populated'); 
    } 
} 
+0

有沒有需要'else if(!eventParameter){',一個簡單的'else {'是足夠的 – Toto

1

非常簡單。注意:這是假定所有數據和DOM遵循相同模式的最短解決方案。

var array = ['title','description'] 
for(var i = 0 ; i < array.length; i++){ 
    var s = array[i]; 
    var obj = $(".ia-event-" + s); 
    if (event[s]) 
     obj.html(event[s]).addClass('ia-populated'); 
    else 
     obj.removeClass('ia-populated'); 
} 
+0

這將工作,除了我發現我的開始時間有不同的格式。感謝您的幫助! – hbowman