2017-07-21 23 views
0

jqueryを使用してトランジションの異なるページ(ページ番号)をレンダリングしようとしています。私の要素にアタッチしたイベントは消えて、理由はわかりません。.html()は、2番目のレンダリングでそれらを削除しているようですが、どうすればそれらを渡すことができますか、.clone(true,true)は十分でした。2回目以降にイベントが発生しない.html()はレンダリングします

var transition_default = function(offsetStart, offsetEnd) { 
     plugin.currentElements.hide(); 
     plugin.currentElements = plugin.settings.objElements.slice(offsetStart, offsetEnd).clone(true,true); 
     plugin.el.html(plugin.currentElements); 
     plugin.currentElements.show(); 
    }; 

ご迷惑をおかけして申し訳ございません。

更新1:この男はほとんど同じ問題を抱えていたようですが、質問解決法を自分のケースにどのように適用するかは完全にはわかりません。 Backbone: event lost in re-render

更新2:ソリューションの適用方法を見つけました.detach()、下記の私の答えを参照してください。

+1

実際に問題を特定するには[mcve]が必要です。 –

+0

@Diegoあなたの編集に関して。あなたは、あなたが「その問題解決法をどのように適用するかについて完全にはわかっていない」と主張する。しかし、あなた自身の[self-answer here](https://stackoverflow.com/a/45245869/1906307)は '.detach()'を使うことです。 [とその答え](https://stackoverflow.com/a/12046271/1906307)は '.detach()'を使うことです。 – Louis

+0

@Louisはい私が編集を投稿したとき、私の主張はしばらくしてから真実であった。そして、私は正しい解決方法を見つけた。 – Diego

答えて

1

は、単にいくつかの理由で結合事象がこのように破壊されない、バインドを解除し、その後、再びそれらを追加does notの.detachを持つ要素を()削除する必要がありました。

"NombreINPUT"は、私が悩んでいた要素の親です。

1

デリゲートバインディングの使用を検討する必要があります。

$(existingParentElementOfThings).on(event, childElementSelector, eventHandler); 

問題は、あなたがHTML(とに結合した内容)を交換しているので、バインディングを持っていた要素がなくなっている可能性が最も高いです。削除されていない親に対してデリゲートバインディングを使用することにより、子からのイベントはそれまでバブル処理され、期待通りに処理されます。私は解決策

var transition_default = function(offsetStart, offsetEnd) { 
     plugin.currentElements.hide(); 
     plugin.currentElements = plugin.settings.objElements.slice(offsetStart, offsetEnd).clone(true,true); 
     $("#nombreINPUT").children().detach(); 
     $("#nombreINPUT").html(plugin.currentElements); 
     plugin.currentElements.show(); 
    }; 

を発見し[OK]を

関連する問題