Q
要素の追加と操作
0
A
答えて
1
にクリックリスナーを追加しています。新しいものが作成されるたびにがバブルします。
リスナーをliveリスナーで1回追加します。いずれかのバブルが作成される前に設定できます。
数字のid
属性は使用しないでください。これはHTMLによって許可されていません。
さらに、クラスを切り替えると、これに対応する関数が短くなります。toggleClass
1
あなたはこれを使用して簡素化することができます。
$(function() {
// CREATE A NEW BUBBLE
$('.drop').click(function(event){
Bubble(event);
});
var newBubbleId = 0;
function Bubble(event,bubbleClass){
// Create Element
var id = newBubbleId++;
var bubble = $('<div class="bubble" id="b_'+id+'" draggable="true"><input id="bubbleText" type="text" name="text" value="'+id+'" /></div>');
$('body').append(bubble);
// Position Element
var bubbleWidth = bubble.width();
var bubbleHeight = bubble.height();
var x = event.pageX - (bubbleWidth*0.5);
var y = event.pageY - (bubbleHeight*0.5);
bubble.offset({top:y, left:x});
bubble.click(function() {
$(this).toggleClass("active");
});
}
});
は、私はいくつかの他の問題を参照してください。前述の番号のIDまた、すべての入力要素は同じIDを持ちますが、これは許可されていません。 1つのドキュメントにつき1つのIDのみ。同じ名前を使用する場合は、Name属性を使用できます。
また、カウンタ機能は理想的ではありません。
しかし、これはあなたの問題を解決するはずです。
+0
ありがとう、非常に有効かつ簡単な解決策。私は知っている、私のコードは本当にこの時点でうんざりで、整頓されます。 –
関連する問題
- 1. 追加要素が
作成されたバブルの数に応じて、クラスが偶数バブルまたは奇数バブルにのみ追加されます。ソースを見ると、あなたはそれを削除する前に 'active'クラスを設定しないことと関係があると思います。 –