data('autocomplete')在Coffeescript中是未定义的
data('autocomplete') is undefined in Coffeescript
我有这个片段:
$("#select_sourcer").autocomplete(
minLength: 2
source: "/admin/users/list_of_sourcers.json"
focus: (event,ui) ->
$('#select_sourcer').val(ui.item.full_name)
false
select: (event,ui) ->
$("#select_sourcer").val(ui.item.full_name)
$("#merchant_sourcer_id").val(ui.item.id)
false
).data("autocomplete")._renderItem = (ul, item) ->
$("<li></li>").data("item.autocomplete", item).append("<a>" + item.full_name_with_status + "</a>").appendTo ul
有时我会收到此错误:
无法设置未定义的属性"_renderItem"
所以我假设,当:
$("#select_sourcer").autocomplete(...).data("autocomplete")
未定义,我们无法设置属性。如此线程所述:为什么我会收到此JS错误?
但是,我将如何检查Coffeescript中的投票答案?
您可以使用存在运算符的访问器变体:
存在运算符
?.
的访问器变体可用于吸收属性链中的空引用。在基值可能为 null 或未定义的情况下,使用它代替点访问器.
。
因此,如果您正在运行该jQuery并且不确定DOM中是否有#select_sourcer
,那么您可以将?
滑入正确的位置:
$("#select_sourcer").autocomplete(
...
).data("autocomplete")?._renderItem = (ul, item) ->
#-------------------^
...
这将或多或少地产生与以下相同的效果:
x = $('#select_sourcer').autocomplete(...).data('autocomplete')
if(x)
x._renderItem = (ul, item) -> ...
以上内容仅用于说明目的,?.
实际上是检查!= null
而不是一般的虚假。
仅当 DOM 中没有#select_sourcer
时才需要这样做,因此您可能希望避免在不需要时尝试完全绑定自动完成器;OTOH,有时更容易不在乎它是否存在并绑定起来。
相关文章:
- 为什么“;未定义的“;在JavaScript中结束循环
- 要求未定义JS回调参数
- 如何检查管道中未定义的项目
- TypeError:无法读取属性'推'未定义的JavaScript
- $window.ga在AngularJS事件中未定义
- 未捕获的TypeError无法读取未定义的属性socialsharing
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的
- 无法获取属性'selectedIndex'的未定义引用或null引用
- 如何消除代码中的未定义和其他问题
- 未捕获的ReferenceError:$未定义
- this.router在AngularJS 2中未定义
- 未捕获的类型错误:无法读取属性'删除'的未定义
- 节点fs.stat名称未定义
- 尝试在PHP中回显输入文本时出现未定义的索引错误
- Jquery未定义函数正在停止其他操作
- AngularJS指令出错-无法读取属性'编译'的未定义
- 这.SOMETHING 总是返回未定义的 - extjs
- 无法获取属性'Id'使用Knockout.js的未定义或空引用API
- Wordpress中带有JQuery Accordion的未定义匿名函数
- 在不破坏未定义函数的情况下,对多个视图使用单个js文件