私が持っているもの:
$('#main').find('*').on('click.stop', function() {return false;});
欲しいもの:パフォーマンスの問題のために
セレクター'*'
をに変更します。all classes with a bound click_handler
私の考え:ハンドラーをクラスにバインドするときに追加のクラスを割り当てる。
アイデアの問題:変更しなければならないコードの量が多すぎます!そして私はとても怠け者です...
私が持っているもの:
$('#main').find('*').on('click.stop', function() {return false;});
欲しいもの:パフォーマンスの問題のために
セレクター'*'
をに変更します。all classes with a bound click_handler
私の考え:ハンドラーをクラスにバインドするときに追加のクラスを割り当てる。
アイデアの問題:変更しなければならないコードの量が多すぎます!そして私はとても怠け者です...
次のようなクリックハンドラを使用して、すべての要素を選択できます。
var e = $.data($(body).get(0), 'events').click;
これを行った場合は、$。eachループを使用してこれらの要素をループし、関数/イベントをそれらに適用できます:)
これを行うために式を書くことができます。jQueryはこのセレクターをネイティブでサポートしていません。
jQuery.extend(jQuery.expr[':'], {
click: function(elem) {
return $(elem).hasEvent('click');
}
});
次に、次を使用できます。
$("*:click").on('click.stop',...
hasEvent:
$.fn.hasEvent = function(event, fn) {
if (!event) { return this; }
var has = {
event: false,
namespace: false,
handler: false
},
events = this.data("events"),
namespace = event.split(".");
event = namespace.shift();
namespace = namespace.join(".");
if (events) {
if (!namespace) { has.namespace = true; }
if (!fn) { has.handler = true; }
if (event in events) {
$.each(events[event], function(i, v) {
if (namespace) {
if (namespace === v.namespace && event === v.type) {
has.namespace = true;
has.event = true;
if (fn && fn === v.handler) { has.handler = true; }
}
}
else {
if (event === v.type) {
has.event = true;
if (fn && fn === v.handler) { has.handler = true; }
}
}
});
}
}
return has.event && has.namespace && has.handler;
};
jQueryはイベントが要素に存在するかどうかをチェックします
これに対する答えはあなたを助けるかもしれません。この質問は、要素にイベントが存在するかどうかを確認することでした。