2017-03-08 8 views
0

私がしたいのは、配列関数の結果に基づいて異なるURLを提供することです。 基本的に、collectTagsが "church"または "concert"に等しい場合、それはA.comにリンクします。それ以外の場合はB.comにリンクします。if..else文は配列関数の結果に基づいています

は、ここで私が現在持っているコードです:

caption : function(instance, item) { 
    var caption, link, collectTags, tags; 

    caption = $(this).data('caption'); 
    link = '<a href="' + item.src + '">Download image</a>'; 
    collectTags = $(this).parent().attr("class").split(' '); 
    tags = $.map(collectTags,function(it){ if(collectTags === "church"){ return '<a href="A.com' + it + '">'+ it +'</a>'} else{return '<a href="B.com' + it + '">'+ it +'</a>'};}); 

    return (caption ? caption + '<br />' : '') + link + '<br/>' + tags.slice(1); 

} 
+0

コードの何が間違っていますか? –

+0

あなたはまだここにいますか? –

答えて

2

私は右のそれを行うことができますことをわからないんだけど、私はそれを試してみますよ。あなたの問題は、もう一度collectTagsにアクセスすることです。これは文字列ではなく配列なので、文字列と比較すると常にfalseになります。そして、あなたのコードを&を読むのが難しくなる文字列の連結を使用することは決してありません。

{ 
    caption: function (instance, item) { 
     var caption, link, collectTags, tags; 

     function format(tpl, binding) { 
      if (typeof binding != 'function') return format(tpl, function (_, name) { 
       return binding[name]; 
      }); 
      return tpl.replace(/\$(\w+)/g, binding); 
     } 

     caption = $(this).data('caption'); 
     link = format('<a href="$src">Download image</a>', item); 
     collectTags = $(this).parent().attr("class").split(' '); 
     function createTag(it) { 
      return format("<a href='$site/$it'>$it</a>", { 
       site: (it == 'church' || it == 'concert') ? 'A.com' : 'B.com', 
       it: it 
      }); 

     } 

     tags = $.map(collectTags, createTag); 
     return [].concat(caption ? [caption, link] : link).concat(tags).join('<br/>'); 
    } 
} 
+0

これはトリックを行ったようです。私はこれを拡大できると思う – Capwiz

関連する問題