編集:bind('click')でバインドされたイベントでも同じ問題が発生するようです。
リンク自体またはその子要素のいずれかをクリックするかどうかに関係なく、live()にバインドされたリンクがたどられないようにするにはどうすればよいですか?
次のマークアップを使用します。
<a class='dynamiclink' href='file.htm'>Some text <span> more text </span></a>
そしていくつかのjavascript(jQueryを使用):
$('a.dynamiclink').live('click', function (e) {
e.preventDefault(); // only valid for when the target was the link
// do stuff
return false; // dont follow the link. Also prevent further bubbling for live()
});
リンクをクリックすると、e.targetにリンクが含まれ、e.preventDefault()によってリンクがたどられなくなります。ただし、spanタグをクリックすると、代わりにe.targetに含まれ、e.preventDefault()は何の役にも立ちません。
falseを返すと、ie6とie7(ie8はテストされていません)を除くすべてのブラウザーがリンクをたどることができないようですが、動作するにはie6/7が必要です。
役立つ場合は、live()に提供されるイベントは、live()メソッド用にjQueryによって特別に作成されているようです。originalTargetのような通常のイベントオブジェクトの属性のほとんどが欠けています。jQueryとlive()について-イベントhttp://api.jquery.com/live/