4

オンはライブの代わりとして機能していません; 新しいONは将来の要素では機能しないためです。私の実装には問題はありません。私はライブを使用することに慣れており、jqueryで何かが機能するかどうかを確実に知っています。

hamlパート:

.field
        %label Select a file
        = file_field_tag 'post[image]', :class => :dashed
        %span.adder + add another file

コーヒーパート:

$("span.adder").on "click", (e) ->
    new_field = $(this).closest(".field").clone()
    $(new_field).insertAfter( $(this).closest(".field") )

追加された新しいspan.adderにjqueryの動作がクラスに付加されていないのはなぜですか?その場合、このshoudlのようなものが機能します。

なぜJQueryの人たちはそれを削除したのですか?理解できません。


アップデート


$("span.adder").on("click", function(){ });

ライブとしては機能しません。

それはする必要があります

$(document).on("click", "span.adder", function(){ });

(みんなの答えに感謝します。)

4

5 に答える 5

6

将来の要素を操作するには、このようなドキュメントで使用する必要があります

$(document).on('click', 'span.adder', function(){
       //Code here
});
于 2013-02-15T09:19:15.687 に答える
1

これ.on()までに、.live()イベントバインディングを処理する非効率的な方法とすでに考えられていました。そのため、将来の使用のために使用する必要があります.on()

例えば:-

$(document).on('click', '#yourElement', function() { 
  // your functions here
});

ここにもっと良い説明があります

于 2013-02-15T09:24:54.173 に答える
0

代替品です。直訳は次のようになります。

$(document).on('click', '.my-selector', function() {});
于 2013-02-15T09:19:19.087 に答える
0

彼らはより良い実装を持っていたので、それを非推奨にして削除しました。のドキュメントが表示されます.on()

$(ancestor).on(event, element, function);

その要素に近い祖先としてそれを使用する必要があります。いくつかのパフォーマンスの問題があります。

jQueryバージョンもアップグレードします。

于 2013-02-15T09:19:23.483 に答える
0

On works asdelegate` が行っていたもので、正確には .live; とは異なります。親でそれを使用し、それをトリガーするイベントと子を指定する必要があります。何かのようなもの。

$(window).on("click", ".button", function(){ 
    alert("You clicked the button... and I hate alerts");
});
于 2013-02-15T09:20:56.580 に答える