7

私はこのhtmlスニペットを持っています:

<a href="picture-big.jpg">
  <span>
    <img src="picture-small.jpg">
    <input type="checkbox" name="delete">
  </san>
</a>

そしてJS部分:

$('input').click(function(e) {
  e.stopPropagation();
}); 

Mozilla では、チェックボックスをクリックすると伝播が停止しますが、そのアンカー (picture-big.jpg) には引き続き移動します。

return false または e.preventDefault() (および jQuery ($('input').prop('checked', true);) でチェックボックスをチェック) を使用すると、入力がチェックされません。

アイデアは、リンクをたどらずにチェックボックスをオンにすることです。Chrome と IE では動作しています。しかし、Mozilla ではありません。

何か案は?

4

4 に答える 4

7

マークアップを再構築することをお勧めします。それが不可能な場合は、次の方法でうまくいきます。

$('input').click(function(e) {
    e.preventDefault();
    var that = this;    
    setTimeout(function() { that.checked = !that.checked; }, 1);    
}); 

フィドル

于 2013-05-08T09:56:39.343 に答える
4

stopPropagation()dom ツリーでイベントがバブルアップするのを止めるだけです。つまり、親には通知されませんが、デフォルト アクションの実行は止められません。e.preventDefault()ナビゲートを停止するには、コードに追加する必要があります。

于 2013-05-08T09:43:04.110 に答える