Kokudoriing

技術系与太話ブログ

あったらいいんじゃないかと思うjQuery.fn達

jQuery のプラグインってどうしても UI 周りが多いですね。
UI に依存しないプラグインをまとめてるサイトとかあったりしないですかね。

$.fn.toString = function() {
  var isAllClonable = this.filter(function() { return !this.cloneNode; }).length > 0;
  if (isAllClonable)
    return $('<div />').append(this.clone()).html();
  return Object.prototype.toString.apply(this);
};

toStringはObject.prototype.toStringがまんまだったのでオーバーライド。
ちなみにChromeだと元々の$.fn.toStringは "[object Object]" と表示される。
びっくりするぐらい意味が無い。
またまた$.isPlainObjectなどでお馴染みの Object.prototype.toString.apply($('#hoge')) をすると
オーバーライドしようが関係なく"[object Object]"を吐いてくれるので安心。

$.fn.isEmpty= function() {
  return 1 > this.length;
};

その名の通り要素があるかどうか。
rubyとかなら必ずと言っていいほどこういうちょっとしたメソッドがあったり。
記述的になるので良いですねと。


あとは $.fn.each のエイリアスメソッドで $.fn.tap とか、は微妙ですかね。
(というか $.fn.each が return this してるのが微妙な気がしなくもない。)

因みに一番目の $.fn.toString は別にデバッグ目的だとかではなく、
Twitter Bootstrap とかだと HTML の data 属性を主に扱うので文字列を扱う事が多々ありまして。
しかし HTML タグを含む文字列をゴニョゴニョしたくはなかったのでという感じです。
そして愚直に div に append して $.fn.html() してるんですが効率とかどうなんでしょうか。