2012-03-07 19 views
2

を打たないのjQueryをクリックするか、マウスオーバー機能....何も起こりません。もともと私はmouseoverを使用しようとしていましたが、私はそれを間違ってやっていると思ったので、clickを試しました。サイコロはありません。私は、次のHTML要素を持っている

UPDATE - これは働くことになった方法である、ジェフBが示唆したように、私は.on以上.liveを使用していますが、私は.onが同じようにうまくいくだろうと確信しています。

$('.receipt').live('click', function() { 
    alert('hai'); 
    alert($(this).attr('id')); 
}); 

UPDATE 2から.onは、将来的に.liveを交換するので、あなたはおそらく.onを使用する必要があります。

+0

「$( '領収書」)をクリックしてください(... – CAbbott

+0

jsFiddleで動作します。そのリンクを操作する他のコードが必要です。 – Igor

+0

これは既にあります。間違っているのですが、なぜこれが下落しているのですか? – Cody

答えて

4

あなたは、idが動的に生成されると言います。ハンドラが作成された後に要素が作成された場合、要素は機能しません。動的な要素のために

.on()を使用します。

$('body').on('click', '.receipt', function() { 
    alert('hai'); 
    alert($(this).attr('id')); 
}); 

この場合、イベントはDOMを移動し、その後、それが.receiptに起源を確認しますと、bodyは、基本的にクリックを処理要素です。 bodyの代わりに、.receipt divの親/祖先である任意の要素を使用できます。

bodyはクリックを処理するため、ハンドラは常に存在するものにアタッチされます。この方法で、.receipt要素を追加して削除することができ、ハンドラが消えてしまうことを心配する必要はありません。

+0

Ahhhhhhhhhhh ....それはまさにそれです。私は '.on'の代わりに' .live'を使用しています - 違いがあるかどうか分かりますか?ありがとうございました! – Cody

+1

実際、jQueryのそれ以降のバージョンでは、 'live'、' delegate'、および 'bind'を置き換える' .on() 'が' .live() 'の代わりに使われなくなりました。関数の説明の後の最初の段落を参照してください。http://api.jquery.com/on/ –

2

変更$('receipt')$('.receipt')

+0

これはすでにあります。 – Cody

+0

まだ動作していない場合は、 'Jeff B'' .on()'の解決策を確認してください。 – arunes

1

にあなたが欠落している 'と。'あなたのセレクタで。クラスを選択するために使用されます。

これは、次のとおりです。$('.receipt')

1

それはCSSセレクタ

0

を参照してくださいあなたは、クラスセレクタ

$('.receipt').click(function() { 
    alert('hai'); 
    alert($(this).attr('id')); 
}); 

を使用する.文字を追加する必要がdiv要素にアクセスするために$('.receipt')を使用する必要がありますクラスを使用するときは.classNameを記述する必要があります。idを使用する場合は、その理由で#idNameを使用する必要があります。$( '領収書')を$( '領収書')に変更する必要があります

関連する問題