2016-05-24 6 views
-1

私はこの権利を求めているのかどうかは分かりませんが、基本的には私のコードを単純化しようとしているので、同じことを5回書く必要はありません。 以下に2つのサンプルを含めました。変更されるのはevent.Xと ".ia-event-x"だけです。2つの変数を使用してコードを簡略化しますか?

// 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

私はあなたができることを意味します。しかし、あなたは既に2回同じことを書いているように見えますので、私は多くの利点を見ません。また、関数を作成してパラメータを渡すこともできます。これはおそらくより良いアプローチになります。 – 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

関連する問題