三元操作的不完整声明

时间:2016-10-19 23:46:58

标签: javascript jquery chaining ternary

语法问题;是否可以执行以下操作:

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

...但是在三元操作中,如下所示:

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。作为占位符。是否有一个jQuery函数可以通过三元运算赋值链接到一个不完整的语句?我喜欢使用三元语句进行语句和操作,因为它很简单,所以任何帮助都会受到赞赏。

ANSWER 感谢@Barmar,他建议使用eval()函数,我能够将它包装在三元操作中。

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

2 个答案:

答案 0 :(得分:3)

您可以将三元组放入.append()

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

或者你可以把它放在索引中:

$.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);
});

答案 1 :(得分: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);


}

希望有所帮助