2

これが私の主張を証明するフィドルです。を使用する$(document).on("click"....)と、無効なボタン内のタグをクリックできます。$("button").click(この動作は..では発生しません。

フィドル

誰かがこの不一致を説明できますか? これはバグですか、それとも jQuery の機能ですか?

編集:私が思いついた回避策:

$(document).on("click", "button > *", function() {
    if ( $(this).parent().is(":disabled") )
    {    
        return false;
    }
});

</p>

4

2 に答える 2

1

この動作は、イベントを適用している要素に起因すると思います。最初の例では、イベントをドキュメントにバインドしています。2 番目の例では、イベントをボタンにバインドしています。を使用したときに何が実行されるかを実際に確認するために jQuery のソース コードを調べていないため、これは単なる憶測ですが$().on()、イベントが発生した後にセレクターが解決されると思います。

たとえばdocument、クリック イベントを取得し、セレクターを解決して適用対象をテストし、関数を実行します。2 番目のシナリオでは、クリック イベントがバインドされる前に、まずセレクターが解決されます。

于 2012-08-08T13:37:05.673 に答える
0

これは、JQuery 1.7.1 のバグに違いありません。1.7.2 または 1.8 に移行すると、なくなります。

于 2012-08-10T18:32:25.837 に答える