2016-10-19 7 views
1

構文の質問;それは、次の操作を行うことが可能である:不完全ステートメントの3進演算

for each(video in videos) 
    $(home_page_feed) .CHAIN. 
     video.special_interests ? 
      // true - chain this 
      .prepend(video.thumbnail) : 
      // false - chain this instead 
      .append(video.censornail); 

私は.CHAINを置く:

var home_page_feed; 
var videos = $get_utoob_videos; 
for each(video in videos) { 
    if(video.special_interests) 
     $(home_page_feed).prepend(video.thumbnail); 
    else 
     $(home_page_feed).append(video.censornail); 
} 

...しかし単一三項の操作で、次のように。をプレースホルダとして使用します。三項演算割り当てによって不完全なステートメントに連鎖するjQuery関数はありますか?私はステートメントと操作のためにそれがシンプルさのために3進を使用することを楽しむので、どんな助けも高く評価されるでしょう。 evalの()関数を使用することを示唆し@Barmarへ

ANSWER おかげで、私は、三項演算のまわりでそれをラップすることができました。

$.each(videos, function(i, video) { 
    eval ("$(home_page_feed)" + 
     ((video.special_interest) ? 
      ".prepend(video.thumbnail)" : 
      ".append(video.censornail)" 
     ) 
    ); 
}); 
+0

これらのスニペットのどちらを使用してコードを実行する可能性がそもそも有効なJavaScriptです - でも、この.CHAINなし。謎のアイテム - しかし、いいえ、私はあなたのコードを識別することができます、あなたはそれを行うことはできません –

+0

最初のものは右グローバルの下で有効です;しかし、質問に関しては、それを実行する必要はありません。 – Jim22150

+1

'for each' - javascriptのいくつかの味で有効ですか?私はこの文法をまったく思い出すことができないので、脳卒中が起こっているはずです! –

答えて

3

ホープ役立つはず:

$.each(videos, function(i, video) { 
    $(home_page_feed).append(video[video.special_interests ? "thumbnail" : "censornail"]); 
}); 

最後のバージョンの引用符に注意してください。

あなたはeval()

$.each(videos, function(i, video) { 
    var chain = video.special_interest ? 
     ".prepend(video.thumbnail)" : 
     ".prepend(video.censornail)"; 
    eval ("$(home_page_feed)" + chain); 
}); 
+0

ええ、ありがとう、分かっています。すばらしい構文。私が求めているものではありませんが、クールなトリックに感謝します。私がやろうとしていることはできないと思っていますか? – Jim22150

+0

それから私はあなたが求めているものを誇張しません。ループのたびに 'chain'を上書きするだけなので、最後のループは意味をなさない。あなたは 'chain + ='を意味しました、それはそれに連結されるでしょうか? – Barmar

+0

このようなJavascriptのスニペットを作成して連結することはできません。 – Barmar

1

これは

var home_page_feed; 
var videos = $get_utoob_videos; 
for each(video in videos) { 
    (video.special_interests)?$(home_page_feed).prepend(video.thumbnail): $(home_page_feed).append(video.censornail); 


} 

が、それはあなたが .append()

$.each(videos, function(i, video) { 
    $(home_page_feed).append(video.special_interests ? video.thumbnail : video.censornail); 
}); 

に引数に三元を置くことができるまたはあなたがインデックスにそれを置くことができます

+0

ありがとうございますが、私は操作として不完全なステートメントにチェーンしたいと考えています。あなたのものは操作ではなく、完全な2つのステートメントがあります。これは構文を簡素化して$(home_page_feed)を2回書く必要がない理由です。 – Jim22150