2012-01-17 16 views
1

私は学校のプロジェクトのために小さなゲームを作っています。基本的には20個のボックスがあります。 10ボックスは-2の値を持ち、5ボックスは2の値を持ち、3ボックスは0の値を持ち、2ボックスは-5と5の値を持ちます。どのようなボックスがクリックされたのかどの価値?私が試してみましたJQuery clickin 'button

shuffle(numbers); // number.length is 20 
for(var i = 0; i < numbers.length; ++i) 
{ 
    $('#buttons').append('<button class="boxes" id="' + numbers[i] + '">' + numbers[i] + '</button>'); 
} 

コード:

コードは、私のボックスを初期化する

$('#buttons').append('<button class="boxes" id="' + numbers[i] + '" onclick="clicked(this);">' + numbers[i] + '</button>'); // made function called clicked with alert in return 

$('button#-2).click(function() { 
    alert('Clicked on -2 box'); 
}); 

をしかし、それは私に私がクリックボックスれるアラートを表示しているようだ、このコードのどれものように思えます。何か不足していますか?

+0

this fiddleに例を試してみてくださいすべてのクリックを処理するために同じ機能を使用することができますあなたのHTMLは無効になります(ID属性はアルファベットで始めることができます)。私はこれがあなたの機能を壊すのではないかと疑っていますが、それに入るのは悪い習慣です。 –

+1

@Abe [Not quite](http://www.w3.org/TR/html5/elements.html#the-id-attribute) HTML5では、jQueryや多くの古いCSSエンジンを壊してしまうかもしれませんが、任意のcharでもスペースでもかまいません。すなわち '

'は完全に有効です。 – Andrew

+1

@Andrew、ヘッドアップのおかげで。これはHTML5に慣れる必要があることを証明するものです。 –

答えて

1

IDの値が何であるかを知るためにボックスのIDに頼るのではなく(IDが一意であるために悪い)、ボタン内のテキストを使用できます。あなたが実際に自分のテキストにそれを持っていることになっていない場合は(私は、これは推測ゲームであると仮定?)、あなたは彼らが値割り当てるためにデータ属性を使用することができます。

var buttons = $('#buttons'); 
for (var i = 0; i < numbers.length; i++) { 
    $('<button class="boxes"></button>') 
     .data('number', numbers[i]) 
     .click(function() { alert('Clicked on ' + $(this).data('number')); }) 
     .appendTo(buttons); 
} 
0

を、あなたは可能性がクリックされた箱を知るためにそれを実行します。

$('.button').click(function() { 
    alert($(this).attr('id')); 
    alert($(this).html()); 
}); 

最初の警告ボックスのidが 秒はあなたにボックスの値が表示されますクリックしたことが表示されますが、あなたの追記に少し構文の問題を抱えている

0

をクリックすると、これはあります仕組み:

for(var i = 0; i < numbers.length; ++i) 
{ 
    $('#buttons').append('<button class="boxes" id="button' 
         + numbers[i] + '">' + numbers[i] + '</button>'); 
} 

、あなたはその後、AZまたはAZ以外で始まるnumbers` `の値を持っている場合は、

function click_handler(){ 
    alert('Clicked on ' + this.id); 
} 

$('button.boxes').click(click_handler); 

関連する問題