2017-11-13 5 views
0

どこから始めるべきか分かりません。私は剣道グリッドを使ってサーバーから供給されたデータを一覧表示しています。最初の読み込み時に、dataBound関数に関数とDOM要素を追加するときを含め、すべてが問題ありません。サーバーへの呼び出しは、一見グリッドを一見して更新(同期)します。しかし、それはdataBound関数が2回目の追加時間と呼ばれるようです。 dataBoundでコード化されたオンクリック機能を実行すると、合計4回実行されます。どのようにしてこの問題がどこにあるのか、この怒っている行動を止めるために何を破壊する必要があるのか​​をテストしますか?最初に何度も関数が呼び出されています(剣道グリッド)

自分のウェブサイト全体に貼り付けるために保存するコードがわかりません。 JavaScriptの仕組みや近藤の仕組みについて根本的に欠けていることが明らかにあるので、この振る舞いの根底にある理論は何ですか?これをどうやってテストしますか?ありがとう!

+0

剣道のメソッドやイベントを実行するグ​​リッドコードとすべての関連イベントから始めます。 – DontVoteMeDown

答えて

0

速い解決策は、データバスでの()などのon()でを使用することがあります。

$(".cell").off("click").on("click", function(e){ ... }); 

これは以前に接続されたハンドラを取り除き、確実​​に1つしか持たないようにします。

グリッド生成コードの外側でevent delegationを使用するとさらに便利です。

$(document).on("click", ".cell", function(e) { ... }); 

イベント委任では、イベントハンドラのセットアップ時にイベントのターゲットが存在する必要はありません。上記の例では、クリックは既に存在するドキュメントオブジェクト上にありますが、ハンドラは 'cell'クラスの要素が実際にクリックされた場合にのみ起動します。グリッドが作成される前にdocument.readyで一度このハンドラを定義することができます。

関連する問題