0

クエリとバインディングに問題があるようです。

私の_Layoutでは、ページの下部にjqueryがあり、.on('click')

「アイテムの追加」リンクを取得したpartialViewを取得しました。クリックすると$.post()、parialviewが返され、divコンテナに入力されます。

次回、同じリンクをクリックして別のアイテムを追加しようとすると、jqueryへのバインドが失われたように、リンクのように機能してサイトが更新されます。パーシャルにjqueryを配置してレンダリングすることを選択した場合、毎回機能しますが、構造上、ページの中央にjqueryスクリプトを配置したくありません。

それはなぜですか、そして私は何ができますか?

編集:
これは私が得たバインドです。以前のように一度だけ動作します。

$('.menu-day').on('click', 'a.addItem', function (e) {
          e.preventDefault();
          console.log('ok');
          addRow($(this).attr('id'));
});
4

2 に答える 2

2

$().on('click', function() { ... }) の使用は、バインドする前に要素がページ上に存在する必要があるという点で、従来の .click() バインディングとよく似ています。例えば:

$("ul li").on('click', function() { ... })

そのため、動的に追加されたリスト要素では機能しません。できることは、コンテキストにバブルアップするイベントをリッスンするクリック内のセレクターを指定することです。例えば:

$("ul").on('click', 'li', function() { ... });

バインドされたのはコンテナー リストであり、単に特定の eventTarget をリッスンしているため、リスト アイテムのクリックは、いつ追加されたかに関係なくトリガーされます。

于 2012-10-02T19:38:46.887 に答える
0

Domに存在するイベントと将来追加される要素をバインドするdelegate()メソッドを使用できます。このリンクを通過します

于 2012-10-02T19:42:59.403 に答える