タグ

ブックマーク / blog.livedoor.jp/aki_mana (2)

  • jQuery : ウィジェットのイベントハンドラ : typeOf 'aki_mana'

    格好いいね!と思わせてくれる jQuery プラグインの大半が $.widget() を使っておらず、jQuery黎明期からの書き方がされてて、「これが jQuery の流儀」と考えてしまいそうなのだけど、「ブラウザの画面が切り替わる時に発生するガベージコレクタの作用によって定義したイベントやらがリセットされる」という特徴を利用したページ装飾目的の書き方に過ぎない。 「先日、$.widget() 必須かも」と発言したのは、HTMLを書き換えるアプリケーションにおいて、上記のようなGC作用が見込めない場合、「メモリリークの温床になるのではないか」という懸念があるから。 このような場合には書き換えた HTML を適切に戻すとか、アタッチしたイベントハンドラをデタッチするとかの後処理を面倒でもコードに埋め込まなければならない。 jquery.ui.widget.js と $.Widget オブジ

    jQuery : ウィジェットのイベントハンドラ : typeOf 'aki_mana'
  • jQuery : 要素の操作は必ずAPIを使うべし : typeOf 'aki_mana'

    身近なところで話題になったので。 過去にも、「empty() とか remove() するより、DOMオブジェクトにアクセスして innerHTML = ”” した方が速いよ!」というブログエントリを投下する方が多かったのですが、「必ずAPIを使う」こと。 理由は、「メモリリークの温床だから」 GitHub で manipulation.js のソース読めば判るとおり、結構頻繁に jQuery.cleanData() が実行されてます。― jQuery.cleanData() メソッドは、data() API として独自に実装された「各要素と紐づけられるキー・バリューストア(メモリストア)」に対する処理なので、innerHTML を使う場合でも、jQuery.cleanData() を使うなら、まぁ問題無いです。 要するに、jQuery (Zeptoみたいな類似ライブラリもそう)は、常にH

    jQuery : 要素の操作は必ずAPIを使うべし : typeOf 'aki_mana'
    terkel
    terkel 2013/03/15
    jQuery は内部でメモリのクリーンアップが適切に行われているので、DOM を操作する場合は innerHTML などよりも jQuery API を使うべし
  • 1