2017-04-17 9 views
2

非常に単純なミックス&マッチシステムを作りたいと思っています。ここでユーザーはselectドロップダウンメニューから項目を選択します。私は、ユーザーが何かを選択するたびに、あるテキストが表示されるだけでなく、そのテキスト(および対応するボタン)を取り除くために、カフのやり方でドキュメントに追加されるボタンを持っています。私はD3を使って選択を操作し、クラスを追加し、物を追加しています。クラスを使用して、削除するテキストをボタンに伝えます。すべてのことが言われている、私はこれがまだ私が実行しているネイティブのjavascriptの問題になると信じています。問題は次のとおりです。動的ボタンの初期プロパティのメモリを保持する

selectドロップダウンメニューからいくつかを選択し、次にxボタンをクリックして、下から上に順番にクリックすると、その動作は必要に応じて行われます。ただし、上部または中央のボタンをクリックしても、ボタンは正しいテキストを削除しません。私はそれがボタンが単に私が使用している動的クラスの最新の文字列値を削除しているためだと思う。これは、ボタンが実際にその.on('click', function() {})の初期のプロパティ(したがって、投稿のタイトル)を保持しているのか疑問に思う。

このような場合、ボタンが本質的に動的であるため、このような問題を回避する方法はわかりません。

非常に簡単で簡単な例hereです。

答えて

2

ちょうどあなたの要素は、1つのそのようなシナリオが働いてこの

d3.select('body').append('button') 
    .text('X') 
    .attr('id','b'+(intCount+1)) 
    .attr('class',choice+'1') //class is the id of the text element 
    .on('click', function(d,i) { 
    var t = d3.select(this).attr('id') 
    var c = d3.select(this).attr('class') 
     var thisChoice = choice; 

     d3.selectAll('.' + t).remove(); //remove this element 
     d3.selectAll('.'+ c).remove(); //remove text element 
     intCount -= 1; 
     count -= .7; 
    }); 

ようsave the id reference of element as class of another elementになりアクセス可能であることを確認して事のメモリの種類を保持する必要はありませんFIDDLE

関連する問題