我正在跟踪代码中的一个神秘问题。这个“错误”发生在event handler
内,该.delegate()
通过jQuery的my.$table_body.delegate('.wf-dropdown', 'change', function(e){
parent_row_element = $(e.target).closest('tr')[0];
if( typeof $.data(parent_row_element, 'changed') == 'undefined' )
$.data(parent_row_element, 'changed', {});
$.data(parent_row_element, 'changed').wf_id = e.target.value;
// .. more code
});
绑定:
undefined
您不需要知道某些变量的定义位置以及它们的用途,检查parent_row_element
值时会发生神秘的事情。
我显然检查是否已经有一个对象附加到typeof $.data(anything)
,如果没有,则创建它。似乎undefined
以我无法描述的方式失败。如果附加了像Firebug这样的调试器,它会正确评估.wf_id
并且一切正常,没有调试器,if(!$.data(parent_row_element, 'changed') )
$.data(parent_row_element, 'changed', {});
的赋值总是抛出,因为对象未定义,因为它没有被创建。
如果我使用这句话,它的效果非常好:
{{1}}
这就是为什么我猜这是一个错误。或者我忽略了什么?
我可以重现这种行为:
在点击时抛出错误,使用了typeof
http://www.jsfiddle.net/5cEVf/
工作正常,没有类型
http://www.jsfiddle.net/5cEVf/3/
答案 0 :(得分:3)
升级到1.4.2并且已修复。
如果您提醒typeof
的结果,则会在1.4.2中获得object
。
答案 1 :(得分:1)
问题是该值设置为null,null是一个对象。
因此typeof
返回'object'
使if
失败,并且由于该对象为null,因此也无法分配新属性。