私は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
なりました。したがって、これはプロダクションで as jQuery 要素t
を実行することを拒否しました。$el
これは問題ですが、なぜこれが発生するのかわかりません。なぜこれが私に起こるのか、誰でも説明できますか、ありがとう。
更新:縮小されたコードは問題ではありませんでしたが、配列内のノードが適切にロードされる前にスクリプトが実行されましたが、ドキュメントの準備が整った後に関数を呼び出しています。つまり、DOM を完全にロードする必要があります。
ヒント: script タグを に入れています。これは、コードが縮小されていない場合に適切に機能します。