自由時間のプロジェクトをハッキングしているときに、不可解な jQuery の動作に出くわしました。
カスタム検証プラグインを作成して動作させています。プラグインでは、.closest() メソッドを使用していくつかの機能を実装したいと考えていました。奇妙なことに、このメソッドは複数の要素を返します。
サンプルコードは次のとおりです。
this.closest(".control-group")
$(this).closest(".control-group");
上記のコード行は両方とも、クラスが「control-group」の 4 つの要素すべてを選択します。私のプラグイン内に置かれたこのコードは動作します:
var element_ID = this.attr("id");
$("#" + element_ID).closest(".control-group")
上記は、「control-group」クラスを持つ正しい要素を 1 つだけ選択します。
検証したいすべての要素に「id」プロパティが設定されているわけではないため、この「ハック」を使用できないため、すべての場合に機能するとは限りません。
jQuery 1.7.2 を使用しています (最新の安定版のようです)。なぜそれがそのようなものなのか、何か考えはありますか?