我在 CoffeeScript 中有这个功能
render: ->
_.each @$elements, ($el) =>
if $el[0].id is 'tabs-div'
emptySlate = "<div class='js-empty-slate' style='padding:40px;'><h3>no data available</h3><div>"
@setEmptyPlacholde($el, emptySlate)
return
@setEmptyPlacholde($el)
setEmptyPlacholde: ($el, emptySlate)->
emptySlateHTML = emptySlate or "<h3 class='js-empty-slate'>no data available</h3>"
if $el.hasClass('mobile-os-con') or
$el.hasClass('time-of-visit-con') or
$el.hasClass('gender-visit-con') or
$el.hasClass('time-redemption-sales-con') or
$el.hasClass('gender-redemption-con')
$el.children().hide()
else
$el.empty()
$el.append emptySlateHTML
$elements 是一个 jQuery 变量,它使用如下数组:
$elements: [
$("#tabs-div")
$("#visits-male")
$("#visits-female")
$("#days-of-visits")
$(".time-of-visit-con")
]
当我使用 RequireJS 优化器时r.js
,它使用Uglify
生成的缩小代码.. 看起来像这样:
render:function(){var e=this;return _.each(this.$elements,function(t){var n;if(t[0].id==="tabs-div"){n="<div class='js-empty-slate' style='padding:40px;'><h3>no data available</h3><div>",e.setEmptyPlacholde(t,n);return}return e.setEmptyPlacholde(t)})}
在之前的缩小代码中,$el
变成t
.. 所以这拒绝$el
在生产中执行 as jQuery 元素。
这是问题,但我不知道为什么会这样。谁能解释一下为什么会发生这种情况,谢谢。
更新:缩小的代码不是问题,而是在数组中的节点正确加载之前执行的脚本,但是我在文档准备好之后调用该函数,这意味着 DOM 必须完全加载。
提示:我将脚本标签放在 中,当代码没有被缩小时,这可以正常工作。