0

jQuery 1.7 の使用

動的にロードされるコンテンツに Click イベントをバインドする際に問題が発生しています。

私は周りを見回して、 、 、および を試しましたが、.liveうまく.delegate動作.onしません。

これは私のコードです:

$(".fileexplorer_folderdlg").delegate(".delete", "click", function () {
        console.log("Hello world!");
    });

問題は、.fileexplorer_folderdlgが動的にロードされることです。.fileexplorer (動的にロードされない)を使用すると動作しますが、バインドしたくない.deleteクラスを持つ要素が他にもあります (また、さまざまな理由で要素クラスの名前を変更したり変更したりすることはできません)。

また、セレクターとして.fileexplorer_folderdlg .deleteを使用してみましたが、.delegateどちらも機能しませんでした!

もちろん、バインドしたい要素に別の一意のクラスを追加することもできますが、これは本当に機能するはずですよね?

4

1 に答える 1

2

私はこれがうまくいくと信じています:

$(document).on('click', '.delete', function() {
    if ($(this).closest('.fileexplorer_folderdlg').length) {
         console.log('hello, world!');
    }
});

または単に:

$(document).on('click', '.fileexplorer_folderdlg .delete', function() {
     console.log('hello, world!');
});

.fileexplorer_folderdlgご覧のとおり、動的であるためバインドできません。したがって、将来のある時点でその要素含む静的要素にバインドする必要があります。

代わりに、これは にバインドしますdocument(ただし、残念ながら、その後ドキュメントを 1 回クリックするたびに起動します)。

ジェフによる編集

上記のコードは機能しませんでしたが、最も望ましい解決策ではありませんが、コードを少し変更すると機能しました。

$(document).on('click', '.delete', function () {
        if($(this).closest(".fileexplorer") != null)
          console.log("Thanks for your help!");
    });

動作しますが、このイベントは他のすべての .delete クラスに対して発生します。私が理解していないのは、.fileexplorer_folderdlg .deleteを使用しても機能しなかった理由です!

于 2012-07-03T08:44:12.533 に答える