-1

これ<li>をクリックすると、その<li>前に別の要素が作成され(一連のクラスが適用されます)、すべてうまく機能しています..問題は、新しく作成された<li>要素を(jQuery経由で)変更できないためです。それらは動的に作成されました。

現在、次のように設定されています。

 $(".foo").on("click", function() {
//Blah blah blah
});

そして、代わりに以下のコードを既に試しましたが、それでも機能しませんでした。

$(".foo").on("click", function() {
//Blah blah blah
});

事前にご協力いただきありがとうございます。

4

5 に答える 5

1

li は jQuery v1.7 用に動的に作成されるため、現在および将来において、現在のセレクターに一致するすべての要素のイベント ハンドラーをアタッチします。

$(document).on("click", ".foo", function() {
    //Blah blah blah
});

基本的に、1.7 以降を使用している場合、onの構文が少し正しくありません。

于 2013-02-03T10:59:15.873 に答える
0

JQuery 1.7+

関数で動作するはずだと思いon()ます:

$(".foo").on('click', function() {
    // more code
});

他の

$(".foo").live('click', function(){
    // more code
}
于 2013-02-03T10:50:00.280 に答える
0

Bind the event to an already present parent element:

$('#parent').on('click', '.foo', function() {
    ...
});

'#parent' would probably be a selector for your <ul> element.

于 2013-02-03T10:51:56.023 に答える
0

このアプローチを試してください:

  $("ul").on('mouseup', '.item', function() {
    $(this).toggleClass("completed");
  });

JS フィドルのデモ

あなたが抱えていた問題は、イベントがバインドされ.itemた時点で要素が DOM に存在しなかったことです。mouseupこのアプローチは、 を存在する にバインドmouseupulメソッドを使用してそのイベントをリッスンし、ターゲット要素がメソッドに渡されたセレクター ( ) と一致する場合、無名関数 (メソッドに渡された 3 番目の引数) を実装します。on().item

ターゲットがそのセレクターと一致しない場合、イベントは何もしないか、祖先を通じて伝播し続けます。

于 2013-02-03T11:32:17.577 に答える
0

これはうまくいきますか?:

$(function() {

  var task =
    $('<li class="editable todo-item">Double Click to Edit</li>');

  $(document).on('click', '.todo-new', function() {
    $('.todo-new').before(task);
  });

  $(document).on('dblclick', '.todo-item', function() {
    $(this).toggleClass("todo-completed");
  });

});
于 2013-02-03T11:35:05.937 に答える