我正在尝试在javascript / jquery中构建一个比较的json对象。这就是我所拥有的
HTML:
<div class="field">
<div>size</div>
<div>large</div>
<div>medium</div>
<div>number</div>
</div>
JS:
selectedObj = {
'fieldSize':false,
'sizeXSmall':false,
'sizeSmall':false,
'sizeMedium':false,
'sizeLarge':false,
'sizeXLarge':false,
'fieldName':false,
'fieldNum':false
};
if(jQuery('.field div:contains("size")')){selectedObj['fieldSize'] = true}
if(jQuery('.field div:contains("xs")')){selectedObj['sizeXSmall'] = true}
if(jQuery('.field div:contains("small")')){selectedObj['sizeSmall'] = true}
if(jQuery('.field div:contains("medium")')){selectedObj['sizeMedium'] = true}
if(jQuery('.field div:contains("large")')){selectedObj['sizeLarge'] = true}
if(jQuery('.field div:contains("xl")')){selectedObj['sizeXLarge'] = true}
if(jQuery('.field div:contains("name")')){selectedObj['fieldName'] = true}
if(jQuery('.field div:contains("number")')){selectedObj['fieldNum'] = true}
理想情况下,我最终得到的对象如下:
selectedObj = {
'fieldSize':true,
'sizeXSmall':false,
'sizeSmall':false,
'sizeMedium':true,
'sizeLarge':true,
'sizeXLarge':false,
'fieldName':false,
'fieldNum':true
};
我最终会找到一切都是真的对象。这是一个例子:
http://jsfiddle.net/vz600nd7/
另外,当我在之后的控制台上记录它之后,它看起来像这样:
看起来'预览'提供了正确的信息,但实际视图却没有。
答案 0 :(得分:2)
正如我在评论中所说,jQuery(selector)
将返回一个jQuery对象,它始终是一个真正的值。因此,每次都会执行if条件。
我会尝试类似
var log = (function() {
var $log = $('#log');
return function(msg) {
$('<p/>', {
text: msg
}).appendTo($log)
}
})();
var map = {
'fieldSize': 'size',
'sizeXSmall': 'xs',
'sizeSmall': 'small',
'sizeMedium': 'medium',
'sizeLarge': 'large',
'sizeXLarge': 'xl',
'fieldName': 'name',
'fieldNum': 'number'
};
selectedObj = {
'fieldSize': false,
'sizeXSmall': false,
'sizeSmall': false,
'sizeMedium': false,
'sizeLarge': false,
'sizeXLarge': false,
'fieldName': false,
'fieldNum': false
};
var $els = jQuery('.field div');
$.each(map, function(key, value) {
selectedObj[key] = $els.is(':contains("' + value + '")')
});
log('After: ' + JSON.stringify(selectedObj))
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="field">
<div>size</div>
<div>large</div>
<div>medium</div>
<div>number</div>
</div>
<div id="log"></div>
&#13;
答案 1 :(得分:0)
如果要检测,如果对象存在,请使用:
if($('.field div:contains("size")')[0]) selectedObj['fieldSize'] = true;
...