2011-12-23 12 views
4

間の配列を異なる実行しているだけの例のように: http://jsfiddle.net/nicaia/6cHxR/jqueryのバインド機能は、FirefoxとChrome

JSコード:

警告:

クロームで
$('#checkbox_id').bind('change',function({ 
    alert('change'); 
}).bind('click',function(event){ 
    alert('click');event.preventDefault(); 
}); 

がこれを表示します]チェックボックスをクリックしてください「変更」をクリックして「クリック」を警告し、チェックボックスはチェックされません(チェックボックスは最初にオフになります)。

警告 'クリック'とチェックボックスはチェックされません(チェックボックスは最初にチェックを外します)。

変更はFirefoxでは実行されません。 私はなぜ誰かが教えてくれるのか分からないのですか?

ありがとうございました。

+3

アラートの後にチェックボックスがフォーカスを失うからだと思います。したがって、 'change'イベントはトリガーされません http://api.jquery.com/change/ –

+0

クロムでは、変更イベントがトリガーされます。 – Bodil

+0

[link](http://stackoverflow.com/questions/7031226/jquery-checkbox-change-and-click-event)この質問と私の質問は少し似ています。ありがとう@Nicola – Bodil

答えて

0

クロムは他のブラウザとは異なる動作をすると思います。

$('#checkbox_id').bind('change',function(){ 
    alert('change'); 
}).bind('click',function(event){ 
    alert('click'); 
}); 

(ここではフィドル:http://jsfiddle.net/6cHxR/8/)私はこのコードを試みた をし、IEとクロームがクリックハンドラの前に変更ハンドラを実行しながら、Firefoxは変更ハンドラの前にクリックハンドラを実行します。 私はあなたがそれについてたくさんできるとは思わない

+0

click functionこのコード "event.preventDefault()"クリックハンドラが変更ハンドラの前に実行されるため、firefoxでのchangeハンドラの実行前にクリックハンドラが実行されるため、firefoxでchangeイベントを停止しますか? – Bodil

+0

@Bodil私はfirefoxが他のブラウザとは異なる方法でイベントを処理すると思います。私はこれについての仕様があるかどうかわからないので、すべてのベンダーは彼の実装を行います。私にとってはクリックハンドラが変更ハンドラの前に実行されるのがより理にかなっていますが、それは私の意見です –

関連する問題