平成も終わろうとしているのにjQueryにヤラレル
事象
Google ChromeやFirefoxのコンソールからJavaScriptを実行するとエラーが起きないのにサーバーにそのJavaScriptをアップすると謎のエラーが起きる。
エラー内容
<Google Chrome>
Cannot read property 'replace' of undefined
<Firefox>
TypeError: e is undefined
そもそも、replaceなんてしてないし、eが定義されてないってなんだ..?
久々に苛立ちと焦りが...これはIE6を対応していた頃を思い起こさせるような感じであった。
仕方がないので1行ずつデバックしてみる。
苛立ちや焦りは、良い波紋をうまない。
よって、安定した呼吸をしながら1行ずつデバックする必要がある。
原因発見
以下のソースが犯人のようだ
$('.className').prev('.className').css({"display":"block"}).text('やれやれだぜ。');
一見、正しそうに見える。いや、むしろ正しい。
しかし、なぜだか「cssのメソッドチェーン」ところでこける...
css({"display":"block"}) → show()にしたら、ケロッと動いた。
まったく「やれやれだぜ。」
一言
そもそもclassで出し分けすればいいのになんでこんなめんどくさいことをしないといけないかは、
システム絡みの大人の事情ということで、お察しください。
恐るべし、jQuery。