jquery - 每个循环都有条件给出错误的结果

时间:2012-08-15 09:59:13

标签: jquery

我正在循环一个对象,有条件地我正在安慰结果。但我得到了所有3个结果,而不是只得到2.我的代码出了什么问题?

有什么建议吗?

我的代码:

 var processModules = function (mData) {
    var lcalmData = obj = {'content':'new content','navigation':'newNavigation','form':'newform'}; var title;
    $('body').append(
        $.each(lcalmData, function (i,val) {
            title = (i === 'content' || i === 'navigation')  ? $('<div />') : i === 'form' ? $('<form />') : null;
            return title;
        } )  
    )
}

jsfiddle

3 个答案:

答案 0 :(得分:3)

这一行存在问题:

val === 'content' || 'navigation'

我想您是要检查val是否等于其中一个值? )但它不会这样工作:由于===运算符优先级高于||一,它与...基本相同...

(val === 'content') || 'navigation'

...换句话说,总是一个真正的价值。

你想要的东西可以像......一样简单地重写。

... (i === 'content' || i === 'navigation')

...因为它是应该检查的索引(键),而不是值。

答案 1 :(得分:1)

http://jsfiddle.net/WsQ6K/2/

您使用的是val而不是i,即属性名称而不是值

答案 2 :(得分:0)

你需要这样做:

var title = ( val === 'content' || val === 'navigation' ) ? val.type  : null;

可能不需要括号()。您现在正在测试val ==='content'或者'navigation'是否为'true'。事实上,后者总是如此。