少し前に、イベントの重複バインディングの防止について質問しました[こちら] 1.8 の式を更新しようとしていますが、機能しません。
オリジナル:
$.expr[':'].hasEvent = function(obj, idx, meta, stack) {
return ($._data((obj), 'events') != undefined && $_.data((obj), 'events')[meta[3]] != undefined);
};
私の失敗した試み:
jQuery.expr[':'].hasEvent = $.expr.createPseudo(function( selector, context ) {
return function(elem) {
return ($._data((elem), 'events') != undefined && $_.data((elem), 'events').selector != undefined);
}
});
利用方法:
$(object).not(":hasEvent(myEvent)").on("myEvent", onMyEvent);
これは機能します:
if (!$._data((object), 'events') || !$._data((object), 'events').myEvent) {
$(object).on("myEvent", onMyEvent);
}