2

編集: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/

4

2 に答える 2

2

試す:

$('a.dynamiclink').live('click', function() {
   return false;
}).children().click(function() { // or .find('span').click(function() {
   return false;
});

また:

$('a.dynamiclink, a.dynamiclink li').live('click', function() {
   return false;
}).
于 2010-02-25T12:06:27.763 に答える
0

最も可能性の高い原因はreturn false;、無効なマークアップでステートメントの前に発生するエラーです。エラーを再確認してください。

于 2010-02-25T12:07:21.253 に答える