at kaneshin

Free space for me.

JavaScript (jQuery) で動的にイベントの処理を追加する方法

基本的に要素へイベントの処理を追加する場合は

$('#foo').bind('click', function() {
  // procedure
});

としますが、これは動的に生成された要素にはその処理を追加することができません。
そういうときは live メソッドを使用します

$('#foo').live('click', function() {
  // procedure
});

こうすると、動的に生成された foo セレクターにも click の処理が追加することが可能になります。

高速な素数判定

Project Eulerに素数を判定させる問題があったので、その解答の一例

基本はエラトステネスの篩の原理と同じだが、篩は0x00と0xFF (0 or 1でも)で管理してあり、篩の中で0となっている要素数が低いものが次の素数となっています。

その素数を基に、0でない値 (0xFFなど) を素数倍のとこにフィリングしていきます。

JavaScriptでのフレーム描画

下記の様に、関数オブジェクトを作って、その中身に関数を作って、そいつをズババババっと回す

var zubaba = function(elem) {
  var id = undefined;
  var fps = 1000 / 20 >> 0;
  var m = [];
  function frame() {
    m[0] = ~~(200 * Math.random());
    m[1] = m[2] = 0;
    m[3] = ~~(200 * Math.random());
    for (var i = 0, str = ''; i < m.length; ++i) {
      str += m[i] + 'px ';
    }
    document.body.style.margin = str;
  }
  id = setInterval(frame, fps);
  setTimeout(function() {
    if (id !== undefined)
      clearInterval(id);
  }, 3000);
};

window.document.addEventListener('DOMContentLoaded', zubaba, false);